[英]Remove elements from array with another array containing duplicates javascript
[英]Remove elements from an array when get a match in another array in javascript
我在 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
,其中只有不匹配的元素匹配,即column
name
在這種情況下
var array 3=[{name: 'client', default: false}]
我嘗試過拼接,但我的索引不匹配。
這是使用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
})
嘗試使用過濾器作為
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);
您可以使用哈希表作為不需要的項目的參考,以便比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);
這將是我使用Array.prototype.filter()
和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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.