JS两个数组根据相同的ID进行重新组合数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS两个数组根据相同的ID进行重新组合数据?相关的知识,希望对你有一定的参考价值。

var c = a.concat(b),//合并成一个数组
temp = ,//用于id判断重复
result = [];//最后的新数组
//遍历c数组,将每个item.id在temp中是否存在值做判断,如不存在则对应的item赋值给新数组,并将temp中item.id对应的key赋值,下次对相同值做判断时便不会走此分支,达到判断重复值的目的;
c.map((item,index)=>
if(!temp[item.id])
result.push(item);
temp[item.id] = true

)
console.log(result)
参考技术A 相同的一组数据,他在进行组合的时候也是会产生一些变化。 参考技术B 遍历,判断ID是否相同,相同就组合value就好了。 然后写到一个新的对象里面。 参考技术C 是的,重新开始就好了 参考技术D 这个问题我不发工资,我不太清楚

根据 ID 和 Index 组合两个数组

【中文标题】根据 ID 和 Index 组合两个数组【英文标题】:Combine two arrays based off of ID and 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 会根据用户输入而变化 【参考方案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);

【讨论】:

以上是关于JS两个数组根据相同的ID进行重新组合数据?的主要内容,如果未能解决你的问题,请参考以下文章

将两个数组合并为一个JS

2个json数据,如何把相同的数组合并成一个数组?

c++两个数组合并成一个新数组

JAVA中的数组合并问题

Java中如何把两个数组合并为一个

js 多个数组合并 每一个值对应一个数组