如何在Javascript中合并两个数组

如何在Javascript中合并两个数组,javascript,arrays,Javascript,Arrays,第一阵列 [{'value':'one','other':'othervalue'},{value:'two'},{value:'three'},{value:'four'}] 第二阵列 ['one','two','six','five'] 这里我想在第一个数组的value属性中添加第二个数组值,如果有unique,那么代码必须跳过它。我尝试过循环所有的值,比如 for( var i=0; i < eLength; i++ ) { for( var j = 0; j <

第一阵列

[{'value':'one','other':'othervalue'},{value:'two'},{value:'three'},{value:'four'}]
第二阵列

['one','two','six','five']
这里我想在第一个数组的value属性中添加第二个数组值,如果有unique,那么代码必须跳过它。我尝试过循环所有的值,比如

for( var i=0; i < eLength; i++ ) {
    for( var j = 0; j < rLength; j++ ) {
        if( temp[j].values != enteredValues[i] ) {

            console.log()

            var priority = enteredValues.indexOf( enteredValues[i] ) + 1;
            var obj = { 'values': enteredValues[i] };
        }
    }
    reportbody.push( obj) ;
}
for(变量i=0;i
var-original=[{'value':'one','other':'othervalue'},{value:'two'},{value:'three'},{value:'four'}];
变量toAdd=['1','2','6','5'];
//首先,用原始数组制作一个字典
//这将节省查找时间
var dictionary=original.reduce(函数(p,c){
p[c.值]=c;
返回p;
}, {});
//现在,对于新列表中的每个项目
toAdd.forEach(功能(i){
//检查字典中是否还没有
如果(!字典[i]){
//把它加到字典里
字典[i]={value:i};
//和您的原始阵列
原始.推送(字典[i]);
}
});
控制台日志(原件)
var-original=[{'value':'one','other':'othervalue'},{value:'two'},{value:'three'},{value:'four'}];
变量toAdd=['1','2','6','5'];
//首先,用原始数组制作一个字典
//这将节省查找时间
var dictionary=original.reduce(函数(p,c){
p[c.值]=c;
返回p;
}, {});
//现在,对于新列表中的每个项目
toAdd.forEach(功能(i){
//检查字典中是否还没有
如果(!字典[i]){
//把它加到字典里
字典[i]={value:i};
//和您的原始阵列
原始.推送(字典[i]);
}
});

控制台日志(原件)通过使用循环数据设置对象,可以将对象用作对象数组中值的哈希表

然后检查数组中是否有值,如果没有,则将新对象推送到数据数组

var data=[{value:'one',other:'othervalue'},{value:'two'},{value:'three'},{value:'four'}],
值=['1','2','6','5','6'],
hash=Object.create(null);
data.forEach(函数(a){
hash[a.value]=true;
});
值。forEach(函数(a){
如果(!散列[a]){
hash[a]=true;
data.push({value:a});
}
});
控制台日志(数据)

.as console wrapper{max height:100%!important;top:0;}
通过使用循环数据设置对象,可以将对象用作对象数组中值的哈希表

然后检查数组中是否有值,如果没有,则将新对象推送到数据数组

var data=[{value:'one',other:'othervalue'},{value:'two'},{value:'three'},{value:'four'}],
值=['1','2','6','5','6'],
hash=Object.create(null);
data.forEach(函数(a){
hash[a.value]=true;
});
值。forEach(函数(a){
如果(!散列[a]){
hash[a]=true;
data.push({value:a});
}
});
控制台日志(数据)

。作为控制台包装{max height:100%!important;top:0;}
尽管使用哈希表或字典可能会有性能优势,但最简单的实现是

second.forEach(s => {
  if (!first.find(f => f.value === s)) first.push({value: s});
});
如果您确实想使用哈希表,从语义上讲,您可能更喜欢使用集合:

const dict = new Set(first.map(f => f.value));
second.forEach(s => { if (!dict.has(s)) first.push({value: s}); });

上面的代码不会处理第二个数组中的重复项,因此如果这是一个问题,您需要相应地进行调整。

尽管使用哈希表或字典可能有性能优势,但最简单的实现是

second.forEach(s => {
  if (!first.find(f => f.value === s)) first.push({value: s});
});
如果您确实想使用哈希表,从语义上讲,您可能更喜欢使用集合:

const dict = new Set(first.map(f => f.value));
second.forEach(s => { if (!dict.has(s)) first.push({value: s}); });

上面的代码不会处理第二个数组中的重复项,因此如果这是一个问题,您需要相应地进行调整。

然后,您得到了什么结果?您具体的编码问题是什么?什么是
eLength
rLength
输入值[i]
?那个空的
console.log()
…的可能重复的可能重复,以及,您得到了什么结果?您具体的编码问题是什么?什么是
eLength
rLength
输入值[i]
?空的
console.log()
…可能重复的唯一问题是
已经包含重复项。示例:
values=['one','two','six','five','six']
将添加
six
两次唯一的问题是
值是否已经包含重复项。示例:
value=['one','two','six','five','six']
将添加
six
两次