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

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

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

杨魅力 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贡献1858条经验 获得超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贡献1963条经验 获得超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贡献1828条经验 获得超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 关注
  • 62 浏览
慕课专栏
更多

添加回答

举报

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