JavaScript-从数组中取出对象并将其内容放置在相同的高度

JavaScript-从数组中取出对象并将其内容放置在相同的高度,javascript,arrays,object,ecmascript-6,Javascript,Arrays,Object,Ecmascript 6,我需要以最简单、最短的方式解决以下问题 如何从阵列内的节点对象中取出关键帧并将其放置在与主阵列相同的高度: 我所拥有的: [{ name: 'name 1', id: 1, node: [{ name: 'name2', id: 2 }]}] 我想要的是: [{name: 'name 1', id: 1}, {name: 'name 2', id: 2}] 提前感谢您的帮助。好的,假设您的结构总是这样: 对象数组始终包含一个对象,并且该对象始终有一个节点元素(即另一个对象数组),您需要这样做

我需要以最简单、最短的方式解决以下问题

如何从阵列内的节点对象中取出关键帧并将其放置在与主阵列相同的高度:

我所拥有的:

[{ name: 'name 1', id: 1, node: [{ name: 'name2', id: 2 }]}]
我想要的是:

[{name: 'name 1', id: 1}, {name: 'name 2', id: 2}]

提前感谢您的帮助。

好的,假设您的结构总是这样:

对象数组始终包含一个对象,并且该对象始终有一个
节点
元素(即另一个对象数组),您需要这样做(伪代码):

mainArray=[{name:'name 1',id:1,节点:[{name:'name2',id:2}]}];
console.log(mainArray);
node=mainArray[0]。节点[0];
删除mainArray[0]。节点;
mainArray.push(节点);

console.log(mainArray)您可以使用reduce尝试此操作。递归地遍历节点,并仅使用名称和id连接数组。希望这有帮助

const data=[{name:'name 1',id:1,节点:[{name:'name2',id:2}]}];
常数展平=(数组=[])=>
array.reduce((acc,{name,id,node})=>
acc.concat(展平(节点)).concat({name,id})
, []);

console.log(展平(数据))这是一段代码,它完成了您要查找的内容。这里有几个console.log语句可以指导您完成正在处理的数据。我相信你需要调整一下,但这只是一个开始

此解决方案中有3个forEach循环,因此,如果您正在处理大型数组/对象,并且/或者经常运行此循环,那么可能会有更有效的方法来实现此目标

假设ECMA6:

const arr = [{ name: 'name 1', id: 1, node: [{ name: 'name2', id: 2 }]}];
arr.forEach((item) =>{
    console.log("array item:", item);
    const keys = Object.keys(item);
    console.log("item keys", keys);
    keys.forEach((key) =>{
        if(item[key] instanceof Object){
            if(Array.isArray(item[key])){
                item[key].forEach((internalObject) =>{
                    console.log("intenal object", internalObject);
                    arr.push(internalObject);
                    delete item[key];
                    console.log("New array", arr);
                })
            }
        }
    })
});

到目前为止,您尝试过哪些代码?您应该添加您使用过的代码,并告诉我们预期输出与当前输出有何不同。我一直在尝试借助lodash将所有内容展平。但是我不想最终使用lodash库来处理这个
return\ux.chain(mainArray).flatte().map('node').flatte().value()