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

我有一个如下数组(代码会话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: [{

                                                  .....


杨魅力
浏览 67回答 3
3回答

猛跑小猪

您可以在原始数据数组上使用,该数组将返回对象及其 。映射对象中的 将是一个映射数组,再次使用相同的映射函数,如下所示:.map()idchildrenconst 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);

神不在的星期二

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));

子衿沉夜

递归的一个很好的用例: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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript