Используйте Underscore.js для удаления объекта из массива на основе свойства

У меня есть массив объектов в javascript. Каждый объект имеет вид

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

Я хочу вернуть отфильтрованную копию массива, в котором удалены объекты с весовым значением нуля

Каков чистый способ сделать это с помощью подчеркивания?

5 ответов

Вам даже не нужно подчеркивать это, так как существует метод filter в ECMAScript 5:

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 в логическое значение, где NULL, false или 0 сделает его false и отфильтровывает его.


Вы также можете использовать функцию отмены подчеркивания.

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


Это должно сделать это:

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


Старый вопрос, но мои 2 цента:

_.omit(data, _.where(data, {'weight':0}));

licensed under cc by-sa 3.0 with attribution.