我有一个包含具有少量属性的对象的JavaScript数组。我想从这个数组创建一个包含" name"的值的新数组。对象的属性。另外,我想处理"名称"使用jQuery' s _.escape方法。
我可以看到"采摘"下划线可以非常方便地得到一个" name"属性值。但是我无法找到是否有任何方法可以在处理时处理值,这样我就不需要遍历数组并在每个数组上调用_.escape。
任何帮助?
答案 0 :(得分:0)
为您提供三种选择:
reduce
一种相当传统的方法是使用reduce
- Underscore's或ES5的内置版本:
// ES5
var newArray = existingArray.reduce([], function(result, current) {
if (condition) {
result.push(current.relevantProperty);
}
return result;
});
// Underscore:
var newArray = _.reduce(existingArray, function(result, current) {
if (condition) {
result.push(current.relevantProperty);
}
return result;
}, []);
(在那里我使用名称result
作为通常称为memo
或last
的参数,因为我们实际上并没有更改其值,只是其内容。)
$.map
由于您已标记了问题jquery
,因此另一个选项是$.map
。与Underscore或ES5的map
不同,$.map
允许您通过返回null
或undefined
将条目从结果数组中删除。所以:
var newArray = $.map(existingArray, function(entry) {
return condition ? entry.relevantProperty : null;
});
for
/ forEach
/ each
当然,一个好的老式for
循环,forEach
来电或_.each
来电都没有错。后者:
var newArray = [];
_.each(existingArray, function(entry) {
if (condition) {
newArray.push(entry.relevantProperty);
}
});
唯一的缺点是它不能是一个表达式,所以前两个有时候更适合你传入一个函数或什么东西(虽然使用一个临时变量不是世界末日,并且可以帮助调试。)