微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据它们的 id 调用对象并将结果附加到一个大的最终对象

如何解决根据它们的 id 调用对象并将结果附加到一个大的最终对象

根据标题我有这个对象数组:

myArr=[ {
"id": "25a91eccf70ae3eb","name": "ParentID",},{
"id": "25a91eccf70ae3eb","name": "Child1",{
"key": "25a91eccf70ae3eb","name": "Child2",}]

并希望每个对象都以自己的 id 命名并将它们附加到以下格式的大对象中

myBigObject={
 ParentID:{
id: "ParentID",name: "Parent",child1_ID:{
id: "child1_ID",name: "Child1",child2_ID:{
id: "child2_ID",name: "Child2",}

我怎样才能做到这一点? 谢谢

解决方法

这是一个简单易读的解决方案:

var myArr = [{
        "key": "25a91eccf71ae3eb","name": "ParentID",},{
        "key": "25a91eccf72ae3eb","name": "Child1",{
        "key": "25a91eccf73ae3eb","name": "Child2",}
]


let finalObj = {}
const first_node = myArr[0];
for (let item of myArr) {
    finalObj[item.key] = { 'id': item.key,"name": item.name };
    if (item.key == first_node.key) {
        finalObj[item.key].ChildrenID = [];
        continue;
    }
    finalObj[first_node.key].ChildrenID.push(item.key);
}

console.log(finalObj);

,

您可以使用 Object.assign()map() 来完成此操作。

const myArr = [
    {
        "id": "25a91eccf70ae3eb",{
        "id": "25a91eccf70ae3eb",}
];

const arrMap = myArr.map(({ id,name },i) => {
    return i === 0 ? // if loop is at first element
        { parent_ID: { id,name } } : // return parent 
        { [`child${i}_ID`]: { id,name } }; // otherwise corresponding child
});

const result = Object.assign({},...arrMap); // assign to object
console.log(result);

,

在您的问题中,示例对象的每个“键”属性的值都相同。我已经改变了假设所有键都不同的假设。请检查下面的解决方案 -

const myArr=[
{
"key": "123",{
"key": "456",{
"key": "789",}];

function modifyArray(arr) {
  return arr.reduce((resultObj,currObj,index) => {
    resultObj = {
      ...resultObj,[currObj.key]: {
        id: currObj.key,name: currObj.name
      }
    }
    return resultObj;
  },{});
}

const arr1 = modifyArray(myArr);

console.log(arr1);

,

似乎您所追求的大部分内容都可以使用 the .forEach() method 对数组的每个元素运行特定函数(这将是您更改内容的地方)然后将结果对象添加到您的大输出对象。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?