Javascript 如果某个属性包含某些值,请删除数组元素
我有以下变量:Javascript 如果某个属性包含某些值,请删除数组元素,javascript,lodash,Javascript,Lodash,我有以下变量: var data = [{id: '1', name: 'demo1'}, {id: '2', name: 'demo2'}, {id: '3', name: 'demo3'}] 现在我有了另一个ids列表 var lookFor = ["2", "3"]; 现在,从data中,我将如何删除id的lookFor数组中不可用的id对象 我试着用下面的方法 _.filter(data, function(item) { return _.contains(lookFor, '
var data = [{id: '1', name: 'demo1'}, {id: '2', name: 'demo2'}, {id: '3', name: 'demo3'}]
现在我有了另一个id
s列表
var lookFor = ["2", "3"];
现在,从data
中,我将如何删除id
的lookFor
数组中不可用的id
对象
我试着用下面的方法
_.filter(data, function(item) {
return _.contains(lookFor, 'id');
});
还有其他方法吗?您可以使用for数组和方法
确定数组是否包含某个元素
结果
[{id: "1", name: "demo1"}]
对立面
var res = data.filter(el=>lookFor.includes(el.id));
UHM考虑以下几点?
var data = [{id: '1', name: 'demo1'}, {id: '2', name: 'demo2'}, {id: '3', name: 'demo3'}];
var keys = ["2", "3"];
let filteredArray = data.filter(element => keys.indexOf(element.id) != -1);
console.log(filteredArray);
// Output is now
// 0: {id: "2", name: "demo2"}
// 1: {id: "3", name: "demo3"}
使用此选项可以得到相反的结果:
let filteredArray = data.filter(element => keys.indexOf(element.id) == -1);
console.log(filteredArray);
// Output is:
// 0: {id: "1", name: "demo1"}
这就是你想要的吗
祝你度过愉快的一天,Elias你可以使用以下方法。请注意,这会改变数据的值
var data=[{id:'1',name:'demo1'},{id:'2',name:'demo2'},{id:'3',name:'demo3'}];
var lookFor=[“2”,“3”];
_.删除(数据、功能(n){
返回u.indexOf(lookFor,n.id)=-1;
});
控制台日志(数据)代码>
这里仅举几个示例,说明如何仅使用ES6或使用lodash
实现这一点。显然有更多的方法可以做到这一点,但这些方法应该会给你一个想法。还要注意的是,大多数示例不会改变所使用的数组:
var data=[{id:'1',name:'demo1'},{id:'2',name:'demo2'},{id:'3',name:'demo3'}]
var lookFor=[“2”,“3”];
//不改变数组并使用ES6筛选器
var withFilter=data.filter(x=>lookFor.indexOf(x.id)>=0)
//不改变阵列并使用ES6 Reduce
var withReduce=lookFor.reduce((r,c)=>r.push(data.find(x=>x.id==c)| |[])和&r,[]))
//不使用Lodah过滤器对数组进行变异
var withLodashFilter=\.filter(数据,x=>\.includes(查找,x.id))
//使用Lodash Remove对阵列进行变异
var withLodashRemove=\.remove(数据,x=>\.includes(查找,x.id))
console.log('ES6 Filter',with reduce)
console.log('ES6 Reduce',带过滤器)
console.log('Lodah Filter',带LodashFilter)
console.log('lodashremove',with lodashremove)
实际上,您并没有使用filter
删除任何元素,因为它使用过滤后的值创建了一个新数组。你真的想移除这些对象(改变数组)?那么你就可以心平气和地接受它作为答案了?=)
let filteredArray = data.filter(element => keys.indexOf(element.id) == -1);
console.log(filteredArray);
// Output is:
// 0: {id: "1", name: "demo1"}