cod*_*der 2 javascript arrays underscore.js
我想知道是否有一种简单的方法可以从过滤后的数组中返回 ID 列表。
这是一个 JSFiddle,我正在过滤一个数组http://jsfiddle.net/eRzBL/
var array = [{'id':1, 'Color':'blue'},
{'id':2, 'Color':'orange'},
{'id':3, 'Color':'green'},
{'id':4, 'Color':'blue'} ];
var myFilter = array.filter(function (item) {
return item.Color === 'blue';
});
Run Code Online (Sandbox Code Playgroud)
我想返回一个 ID 列表,而不是返回对象列表。在这种情况下 [1,4]。我可以创建一个新数组,遍历这个集合并附加 ID,但我想知道是否可以使用现有的下划线功能来做到这一点。
您可以通过将过滤后的数据传递map给仅获取 id来扩展这个想法。
var result = array.filter(function(item) {
return item.Color === 'blue';
}).map(function(item) {
return item.id;
});
console.log(result)
# [1, 4]
Run Code Online (Sandbox Code Playgroud)
如果你想用下划线来做到这一点,
var result = _.chain(array)
.filter(function(item) {
return item.Color === 'blue';
})
.pluck("id")
.value();
console.log(result);
# [1, 4]
Run Code Online (Sandbox Code Playgroud)
此外,您可以_.where像这样使用
var result = _.chain(array)
.where({Color: 'blue'})
.pluck("id")
.value();
console.log(result)
# [1, 4]
Run Code Online (Sandbox Code Playgroud)
如果你更喜欢单线,
console.log(_.pluck(_.where(array, {Color: 'blue'}), "id"));
# [1, 4]
Run Code Online (Sandbox Code Playgroud)
注意:以上所见方法都无法超越原生 JavaScript 的性能
var result = [];
for (var i = 0; i < array.length; i += 1) {
if (array[i].Color === "blue") {
result.push(array[i].id);
}
}
console.log(result);
# [1, 4]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3392 次 |
| 最近记录: |