繁体   English   中英

使用Underscore.js根据属性从数组中删除对象

[英]Use Underscore.js to remove object from array based on property

我在javascript中有一个对象数组。 每个对象都是形式

obj {
    location: "left", // some string
    weight: 0 // can be zero or non zero
}

我想返回一个数组的过滤副本,其中删除了权重属性为零的对象

用下划线做这个的干净方法是什么?

你甚至不需要下划线,因为从ECMAScript 5开始有filter方法:

var newArr = oldArr.filter(function(o) { return o.weight !== 0; });

但是如果你想使用下划线(例如,支持不支持ECMAScript 5的旧浏览器),你可以使用它的filter方法:

var newArr = _.filter(oldArr, function(o) { return o.weight !== 0; });

filter应该做的工作

_.filter(data, function(item) { return !!item.weight; });

!! 用于将item.weight转换为布尔值,其中NULLfalse0将使其为false ,并将其过滤掉。

这应该这样做:

_.filter(myArray, function(o){ return o.weight; });

您还可以使用下划线的拒绝功能。

var newObjects = _.reject(oldObjects, function(obj) { 
    return obj.weight === 0; 
});

老问题,但我的2美分:

_.omit(data, _.where(data, {'weight':0}));
return this.data = _.without(this.data, obj);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM