我有一个如下所示的数组结构,我需要删除所有具有值vik的条目
[{"type" :"x", value: "vik"},
{"type" :"x", value: "jack"},
{"type" :"x", value: "jack"},
{"type" :"x", value: "jack"},
{"type" :"x", value: "vik"},
{"type" :"x", value: "vik"},
]
迭代使用for循环,拼接匹配值vik拧紧。什么是最好的方法。
我的代码是:
for(let obj of filterList){
var i =0
for(let lead of this.core.leadLocalList){
console.log("comapring:" + lead.campaign)
if(obj.value == lead.campaign){
console.log("matched")
this.core.leadLocalList.splice(i,1)
}else
i++
}
}
答案 0 :(得分:4)
您可以使用数组过滤器方法来获得所需的结果。 Array Filter
var data = [{"type" :"x", value: "vik"},
{"type" :"x", value: "jack"},
{"type" :"x", value: "jack"},
{"type" :"x", value: "jack"},
{"type" :"x", value: "vik"},
{"type" :"x", value: "vik"},
];
const result = data.filter(item => item.value != "vik");
console.log(result);
答案 1 :(得分:2)
您可以使用lodash
。这是一个简单的应用程序。
_.remove()
如此:
_.remove( filterList, {
value: 'vik'
} );
或者,使用ES6,您可以执行以下操作:
const filtered = filterList.filter( row => row.value !== 'vik' );
但是,如果应用程序变得复杂并且您需要更高级的东西,则可以利用谓词函数并根据该函数确定过滤:
_.remove( filterList, ( obj ) => {
return ( obj.propertyOne !== SOME_CONSTANT ) && ( ... )
} );