为了账号安全,请及时绑定邮箱和手机立即绑定

将 (键 : 值) 添加到无限嵌套的子对象中

将 (键 : 值) 添加到无限嵌套的子对象中

杨魅力 2022-09-23 16:53:13

我有一个如下数组(代码会话2)。我想添加id:随机到{子Obj}中,如下所示:


{

  name : "Peter",

  age : "18",

  profession : "nurse",

  id : String(Math.random())

  children : [],

 }

但它有 2 种情况:键子的值可能是 [ ] 或 [ 长度 !== 0 ]。我想循环无穷大的父数组并为所有数组添加id。


注意:每个 {子对象} 中的键子值可能看起来像父数组。我的最终目标是为响应API中的所有元素设置id,看起来像模板数组


谢谢你太多了,对不起我的英语,如果它让你觉得复杂


[{

  name : "Peter",

  age : "18",

  profession : "nurse",

  children : []

 }

 { 

   name: "Jack",

   age: "98" ,

   profession: "doctor",

   children: [ {

                 name : "Peter",

                 age : "18",

                 profession : "nurse",

                children : []

               },

               {

                 name: "Varun",

                 age: "80"

                 profession: "scientist"

                 children: [

                             {

                                name: "Ishan"

                                age: "62",

                                profession: "teacher

                                children: [{....

                                 .....

                                 .....[{

                                       name: "Rahul",

                                       age: "23",

                                       profession: "engineer"

                                      children: [{

                                                  .....


查看完整描述

3 回答

?
猛跑小猪

TA贡献1524条经验 获得超8个赞

您可以在原始数据数组上使用,该数组将返回对象及其 。映射对象中的 将是一个映射数组,再次使用相同的映射函数,如下所示:.map()idchildren


const data = [{ name: "Peter", age: "18", profession: "nurse", children: [] }, { name: "Jack", age: "98", profession: "doctor", children: [{ name: "Peter", age: "18", profession: "nurse", children: [] }, { name: "Varun", age: "80", profession: "scientist", children: [{ name: "Ishan", age: "62", profession: "teacher", children: [{ name: "Rahul", age: "23", profession: "engineer", children: [] }] }] } ] } ];


const res = data.map(function mapId({children, ...r}) {

  return {...r, id: String(Math.random()), children: children.map(mapId)};

});

console.log(res);


查看完整回答
反对 回复 2022-09-23
?
神不在的星期二

TA贡献1632条经验 获得超6个赞

const obj = [{

  name: "Jack",

  age: "98",

  profession: "doctor",

  children: [

    {

      name: "Peter",

      age: "18",

      profession: "nurse",

      children: [],

    },

    {

      name: "Varun",

      age: "80",

      profession: "scientist",

      children: [

        {

          name: "Ishan",

          age: "62",

          profession: "teacher",

          children: [],

        },

      ],

    },

  ],

}];


const f = (_) => ({..._, id: String(Math.random()), children: _.children.map(f) })


console.log(obj.map(f));


查看完整回答
反对 回复 2022-09-23
?
子衿沉夜

TA贡献1513条经验 获得超3个赞

递归的一个很好的用例:


var data = [{

  name : "Peter",

  age : "18",

  profession : "nurse",

  children : []

 },

 { 

   name: "Jack",

   age: "98" ,

   profession: "doctor",

   children: [ {

                 name : "Peter",

                 age : "18",

                 profession : "nurse",

                children : []

               },]

}

]

function addIdRecursively(data){

   data.forEach(i=> {

       i.id = String(Math.floor(Math.random()*10));

       if(i.children.length>0){

         addIdRecursively(i.children)

       }

  })

}

addIdRecursively(data);


console.log(data)


查看完整回答
反对 回复 2022-09-23
  • 3 回答
  • 0 关注
  • 11 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信