我有这些数组:
阵列1:
const arr1 = [
{_id: "13", qtde: 1, color: "red", size: "100x100"},
{_id: "16", qtde: 5, color: "green", size: "200x200"},
{_id: "1", qtde: 3, color: "yellow", size: "300x300"},
{_id: "23", qtde: 2, color: "purple", size: "500x500"},
{_id: "3", qtde: 0, color: "orange", size: "200x200"}
]
阵列2:
const arr2 = [
{_id: "23", name: "Produto-23", price: "48.99"},
{_id: "13", name: "Produto-13", price: "58.99"},
{_id: "3", name: "Produto-3", price: "58.99"},
{_id: "1", name: "Produto-1", price: "58.99"},
{_id: "16", name: "Produto-16", price: "58.99"}
]
预期产量:
const arr2 = [
{_id: "13", name: "Produto-13", price: "58.99"},
{_id: "16", name: "Produto-16", price: "58.99"},
{_id: "1", name: "Produto-1", price: "58.99"},
{_id: "23", name: "Produto-23", price: "48.99"},
{_id: "3", name: "Produto-3", price: "58.99"}
]
可以看出,它们是不同的,但是它们具有相同的属性_id
,但顺序不同。我要做的是根据其属性将第二个数组重组为与第一个数组相同的顺序_id
。
只是要清楚一点,我不想合并数组或更改除第二个数组之外的任何内容。
我考虑过使用Array.sort
,但是由于我没有引用属性,所以我不知道如何将其应用于此处。基本思想是使用第一个数组的索引作为参考,因为它不会改变,但我也不知道如何。
我该怎么办?
您可以.findIndex
在中使用sort
以下内容:
const arr1 = [
{_id: "13", qtde: 1, color: "red", size: "100x100"},
{_id: "16", qtde: 5, color: "green", size: "200x200"},
{_id: "1", qtde: 3, color: "yellow", size: "300x300"},
{_id: "23", qtde: 2, color: "purple", size: "500x500"},
{_id: "3", qtde: 0, color: "orange", size: "200x200"}
]
const arr2 = [
{_id: "23", name: "Produto-23", price: "48.99"},
{_id: "13", name: "Produto-13", price: "58.99"},
{_id: "3", name: "Produto-3", price: "58.99"},
{_id: "1", name: "Produto-1", price: "58.99"},
{_id: "16", name: "Produto-16", price: "58.99"}
]
const arr2Sorted = arr2.sort((a,b) => {
const indexOfA = arr1.findIndex(e => e._id === a._id);
const indexOfB = arr1.findIndex(e => e._id === b._id);
return indexOfA - indexOfB;
});
console.log(arr2Sorted);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句