我在javascript中有2个数组
数组1
var columns=[{name: 'id', default: true}, {name: 'type', default: true},{name: 'typeName', default: true}, {name: 'client', default: false}];
数组2
var unSelect=["id", "type", "typeName"]
现在我想要一个新的数组,即Array 3
,其中只有非匹配元素匹配
即name
的{{1}}
在这种情况下
column
我试过拼接,但是我的索引不匹配,谢谢先进
答案 0 :(得分:1)
以下是使用Array.prototype.map
函数执行此操作的最简单方法。此函数可以迭代数组并返回每次迭代所需的内容。
var array3 = columns.map(function(item) {
if (unselected.indexOf(item.name) < 0) //see if the name of an element object is in the unselected array
return item; // if yes, return the element
})
答案 1 :(得分:0)
尝试使用过滤器作为
var unSelect=["id", "type", "typeName"];
var array3 = columns.filter(function(obj){
return unSelect.indexOf( obj.name ) == -1;
});
<强>样本强>
var columns = [{
name: 'id',
default: true
}, {
name: 'type',
default: true
}, {
name: 'typeName',
default: true
}, {
name: 'client',
default: false
}];
var unSelect = ["id", "type", "typeName"];
var array3 = columns.filter(function(obj) {
return unSelect.indexOf(obj.name) == -1;
});
console.log(array3);
答案 2 :(得分:0)
您可以使用哈希表作为不需要项目的参考,以便更快地访问indexOf
。
var columns = [{ name: 'id', default: true }, { name: 'type', default: true }, { name: 'typeName', default: true }, { name: 'client', default: false }],
unSelect = ["id", "type", "typeName"],
hash = Object.create(null),
result;
unSelect.forEach(function (a) {
hash[a] = true;
});
result = columns.filter(function (a) {
return !hash[a.name];
});
console.log(result);
答案 3 :(得分:0)
这将是Array.prototype.filter()
&amp;的解决方案。 Array.prototype.some()
组合。
var columns = [{name: 'id', default: true}, {name: 'type', default: true},{name: 'typeName', default: true}, {name: 'client', default: false}],
unSelect = ["id", "type", "typeName"],
filtered = columns.filter(f => !unSelect.some(e => e == f.name));
console.log(filtered);
&#13;