如何根据另一个对象对数组进行排序?

伯格·杜登

我有这些数组:

阵列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,但是由于我没有引用属性,所以我不知道如何将其应用于此处。基本思想是使用第一个数组的索引作为参考,因为它不会改变,但我也不知道如何。

我该怎么办?

马杰德·巴达维(Majed Badawi)

您可以.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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据另一个对象数组的属性值对数组进行排序

如何根据另一个数组的位置对数组进行排序?

如何根据另一个数组的值对数组的值进行排序

如何基于另一个对象对数组对象进行排序

根据另一个数组中定义的排序顺序对数组进行排序

根据另一个数组的排序顺序对数组进行排序

根据另一个自定义数组对数组中的对象属性进行排序

如何根据另一个数组对对象数组进行过滤和排序

根据另一个数组中的顺序对数组数组进行排序

根据另一个数组的顺序对数组数组进行排序(Ruby)

Javascript:根据另一个对象数组对一个对象数组进行排序

在绘制之前根据另一个数组对数组进行排序

根据PHP上的另一个数组对数组的元素进行排序

根据另一个数组按顺序对数组进行排序

我想根据javascript中的另一个数组对数组进行排序?

根据javascript中的另一个数组对数组进行排序

Javascript-根据另一个数组对数组进行排序

根据另一个数组的键对数组元素进行排序

根据另一个数组的顺序对数组进行有效排序

根据存储在另一个数组中的引用对数组进行排序

PHP 根据另一个数组对数组进行排序

PHP根据另一个数组定义的顺序对数组进行排序

如何根据另一个数组中每个元素的排名对数组进行排序(按升序)?

如何使用Javascript根据另一个数组的相应元素的属性对数组进行排序?

使用另一个数组的对象属性对数组进行排序

基于javascript中的另一个数组对数组对象进行排序

如何根据JavaScript中的另一个数组对数组排序?

根据另一个对象数组的属性对对象数组进行排序

根据另一个对象数组的顺序对对象数组进行排序