簡體   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