Raj*_*a O 3 javascript arrays object
如果值不存在,需要将数组对象(arr1)的值推送到另一个数组对象(arr2)中。现有值不会推入另一个数组。
var arr1 = [{
name: 'fred'
}, {
name: 'bill'
}, {
name: 'ted'
}, {
name: 'james'
}];
var arr2 = [{
name: 'spil'
}, {
name: 'fred'
}, {
name: 'bill'
},{
name: 'paul'
}, {
name: 'stone'
}];
function add(name) {
var found = arr1.some(function (el) {
return el.name === name;
});
if (!found) {
arr1.push(arr2);
}
return arr2;
}
Run Code Online (Sandbox Code Playgroud)
如果 name 属性已存在于arr1. 如果没有将实际项目推送到arr1。
var arr1 = [{ name: 'fred' }, { name: 'bill' }, { name: 'ted' }, { name: 'james' }],
arr2 = [{ name: 'toString' }, { name: 'spil' }, { name: 'fred' }, { name: 'bill' }, { name: 'paul' }, { name: 'stone' }],
hash = Object.create(null);
arr1.forEach(function (a) {
hash[a.name] = true;
});
arr2.forEach(function (a) {
hash[a.name] || arr1.push(a);
});
console.log(arr1);Run Code Online (Sandbox Code Playgroud)
聚苯乙烯
只是为了弄清楚,为什么Object.create(null),一个真正的空对象作为哈希而不是{}一个空对象。注意该项目{ name: 'toString' }。在第一部分中,该项目被插入,在第二部分中则没有,因为hash它有一个名为 的属性toString。
var arr1 = [{ name: 'fred' }, { name: 'bill' }, { name: 'ted' }, { name: 'james' }],
arr2 = [{ name: 'toString' }, { name: 'spil' }, { name: 'fred' }, { name: 'bill' }, { name: 'paul' }, { name: 'stone' }],
hash = {}; // now an object
arr1.forEach(function (a) {
hash[a.name] = true;
});
arr2.forEach(function (a) {
hash[a.name] || arr1.push(a);
});
console.log(arr1);Run Code Online (Sandbox Code Playgroud)