繁体   English   中英

如何根据另一个数组 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM