Ngu*_*206 6 javascript arrays nested object infinity
我有一个如下所示的数组(代码会话 2)。我想像这样将 id : random 添加到 {child Obj} 中:
{
name : "Peter",
age : "18",
profession : "nurse",
id : String(Math.random())
children : [],
}
Run Code Online (Sandbox Code Playgroud)
但它有两种情况:关键孩子的值可能是 [ ] 或 [ length !== 0 ]。我想无限循环父数组并为所有添加 id 。
注意:每个 {childObj} 内的关键孩子的值可能是一个类似于父数组的数组。我的最终目标是为来自响应 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: [{
.....
Run Code Online (Sandbox Code Playgroud)
您可以.map()在原始数据数组上使用,它返回对象及其id. 所述children在所映射的对象将是映射的阵列,再次使用相同的映射函数,如下所示:
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);Run Code Online (Sandbox Code Playgroud)
小智 0
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));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
546 次 |
| 最近记录: |