【问题标题】:Combine two arrays based off of ID and Index根据 ID 和 Index 组合两个数组
【发布时间】:2021-05-09 00:06:51
【问题描述】:

我有两个数组。 arr1 有一个 questionID 属性,我需要根据 arr1 questionID == arr2 INDEX 将 arr1 与 arr2 结合起来。

所以如果 arr1 questionID = 1 它将与 arr2 索引 1 匹配

这可能吗?

这是我目前所拥有的,但这似乎只是根据它们的索引组合两个数组

this.combinedArray = [this.content, this.studyQuestions].reduce((a, b) => a.map((c, i) => Object.assign({}, c, b[i])))

【问题讨论】:

  • 是否保证arr1中的每一项在arr2中都有对应的项?
  • @MoshFeu 不,可能存在 arr2 多于或少于 arr1 的情况
  • @MoshFeu arr1 是恒定的,但 arr2 会根据用户输入而变化

标签: javascript arrays vue.js multidimensional-array


【解决方案1】:

如果我理解正确,您可以将arr1 映射到一个新数组中。 map 回调从arr1 - ...item 获取整个项目,并在questionID - ...arr2[item.questionID 给出的索引中从arr2 获取整个项目。

这就是收集的工作原理

const arr1 = [{
  questionID: 0,
  prop: 'value1.1'
}, {
  questionID: 2,
  prop: 'value1.2'
}]

const arr2 = [{
    prop1: 'value2.1'
  },
  {
    prop1: 'value2.2'
  },
  {
    prop1: 'value2.3'
  }
];

const combinedArray = arr1.map((item, index) => ({
  ...item,
  ...arr2[item.questionID]
}));

console.log(combinedArray);

【讨论】:

    猜你喜欢
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    相关资源
    最近更新 更多