[英]Set the Index of each object, of an nested object into an property
早上好 !
有谁知道如何将嵌套对象的每个对象的索引插入属性?
像这样的东西:
const myObj =
{
"@type": "someType",
A: [
{
"@type": "someType0",
order: "DESC",
myIndex: 0
},
{
"@type": "someType1",
order: "DESC",
myIndex: 1
},
{
"@type": "someType2",
order: "DESC",
myIndex: 2
}
],
B: [],
};
您可以使用.map函数来更改数组中的对象。
const myObj = { "@type": "someType", A: [ { "@type": "someType0", order: "DESC" }, { "@type": "someType1", order: "DESC" }, { "@type": "someType2", order: "DESC" } ], B: [], }; const newA = myObj.A.map((item,index) => { item.myIndex = index; return item; }) console.log(newA);
CodePen链接: https ://codepen.io/bergur/pen/rrdyKX ? edit = 0010
如果你想循环遍历myObj的所有属性,你可以使用Object.keys(myObj)
,然后浏览它们并逐个改变它们。
您可以对数组进行迭代并将i
(当前迭代索引)分配给对象属性,例如myObj.A.forEach((d, i) => d.myIndex = i);
,其中d
- 是当前项目, i
- 是当前索引。
const myObj = { "@type": "someType", A: [ { "@type": "someType0", order: "DESC" }, { "@type": "someType1", order: "DESC" }, { "@type": "someType2", order: "DESC" } ], B: [], }; myObj.A.forEach((d, i) => d.myIndex = i); console.log(myObj);
您可以使用递归方法并为所有数组添加索引。
function setIndex(object) { Object.values(object).forEach(v => { if (Array.isArray(v)) { v.forEach((o, i) => { o.index = i; setIndex(o); }); } }); } const object = { "@type": "someType", A: [{ "@type": "someType0", order: "DESC" }, { "@type": "someType1", order: "DESC" }, { "@type": "someType2", order: "DESC" }], B: [] }; setIndex(object); console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }
您可以使用Object.keys
或Object.values
和Array.forEach
的组合来实现此目的。 使用'myObject'变量作为起点,就像这样......
使用Object.keys
/* loop through keys of 'myObject' */
Object.keys(myObject).forEach(function(key) {
/* check that 'myObject[key] is an Array &&
loop through items in each 'myObject[key]'
to add unique 'myIndex' property */
Array.isArray(myObject[key]) && myObject[key].forEach(function(obj, idx) {
obj.myIndex = idx;
});
});
使用Object.values
/* loop through 'myObject' property values */
Object.values(myObject).forEach(function(val) {
/* check 'val' is an Array &&
loop through each item in 'val'
to add unique 'myIndex' property */
Array.isArray(val) && val.forEach(function(obj, idx) {
obj.myIndex = idx;
});
});
希望有所帮助。 :-D
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.