[英]how to compare the elements of one array to the index of another array in Javascript?
[英]How to change index of elements in array of objects according to another array JavaScript?
我有两个 arrays,需要以相似的方式更改元素的顺序。 通过属性 c。我应该获取属性 c 的 object 的索引:例如 2,并将其放在 arrB 中的正确索引中。 JavaScript
const arrA= [{
a: 1,
b: [{
c: 2,
d: 3
},
{
c: 5,
f: 6
}
]
},
{
a: 2,
b: [{
c: 2,
d: 3
},
{
c: 5,
f: 6
}
]
}
];
const arrB = [{
a: 1,
b: [{
c: 5,
f: 6
},
{
c: 2,
d: 3
},
]
},
{
a: 2,
b: [{
c: 5,
f: 6
},
{
c: 2,
d: 3
},
]
}
];
我需要的是按键b
中所有元素的顺序对arrB
进行排序,使其与arrA
中的顺序相同。 实际上,这个 object 包含更多字段,它们并不相似。 但它们具有相同的属性 c 我应该更改顺序
const arrB= [{
a: 1,
b: [{
c: 2,
d: 3
},
{
c: 5,
f: 6
}
]
},
{
a: 2,
b: [{
c: 2,
d: 3
},
{
c: 5,
f: 6
}
]
}
];
您可以使用sort()
根据arrA[i].b
中匹配元素的索引对元素进行排序。
const arrA = [{ a: 1, b: [{ c: 2, d: 3 }, { c: 5, f: 6 } ] }, { a: 2, b: [{ c: 2, d: 3 }, { c: 5, f: 6 } ] } ]; const arrB = [{ a: 1, b: [{ c: 5, f: 6 }, { c: 2, d: 3 }, ] }, { a: 2, b: [{ c: 5, f: 6 }, { c: 2, d: 3 }, ] } ]; arrB.forEach((item, i) => item.b.sort((el1, el2) => arrA[i].b.findIndex(el => el.c == el1.c) - arrA[i].b.findIndex(el => el.c == el2.c))); console.log(arrB);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.