gpt4 book ai didi

javascript - 使用 underscore.js 从嵌套对象(父子)中获取路径字段值

转载 作者:行者123 更新时间:2023-11-29 15:34:45 27 4
gpt4 key购买 nike

var levels= [
{
path: 'RS',
hasChild :true
},
{
path: 'MO',
hasChild: true
},
{
path: 'EL',
hasChild: true
},
{
path: 'CL',
hasChild: false
},
{
path: 'EL1',
hasChild: true
},
{
path: 'CL1',
hasChild: false
},
{
path: 'RS2',
hasChild :true
},
{
path: 'MO2',
hasChild: true
},
{
path: 'EL2',
hasChild: true
},
{
path: 'CL2',
hasChild: false
},
{
path: 'CL3',
hasChild: false
},
];

是否可以使用 underscore.js 从对象“级别”创建完整路径?例如-
RS\MO\EL\CL
RS\MO\EL1\CL1
RS2\MO2\EL2\CL2
RS2\MO2\CL3\CL3
在上述任何一个级别中, child 都可以出现不止一个。请告知 underscore.js 是否可以深入观察嵌套的对象数组。

请为上面嵌套对象数组的错误格式道歉。

最佳答案

function parse (levels)  {
var buffer = [], target = [];
levels.forEach(function (level) {
buffer.push(level.path);
if (!level.hasChild) {
target.push(buffer.join('/'));
buffer.splice(0, buffer.length + 1);
}
});
return levels;
}

Gives: [ 'RS/MO/EL/CL', 'EL1/CL1', 'RS2/MO2/EL2/CL2', 'CL3' ]

鉴于您当前的结构,获得所需输出的逻辑尚不清楚。程序如何知道 RS2 启动了一个新节点,但 EL1 没有?

编辑:

这解决了问题,但老实说,它很老套。更好的方法是以更好的方式构建数据。

function parse (levels)  {
var buffer = [], target = [];
levels.forEach(function (level) {
if (level.hasChild) {
buffer.push(level.path);
}
else {
var tmp = buffer.slice();
tmp.push(level.path);
target.push(tmp.join('/'));
buffer.splice(buffer.length - 1, 1);
}
if (/^RS/.test(level.path)) {
buffer.splice(1, buffer.length);
}
});
return target;
}

Result: ['RS/MO/EL/CL', 'RS/MO/EL1/CL1', 'RS/MO2/EL2/CL2', 'RS/MO2/CL3']

关于javascript - 使用 underscore.js 从嵌套对象(父子)中获取路径字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30587287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com