JavaScript提取并处理数组中的值
我有一个JavaScript数组,其中包含的对象几乎没有属性。我想从这个数组中创建一个新数组,其中包含对象的“name”属性值。另外,我想通过使用jQuery的quot.escape方法来处理“name” 我可以看到,在获取“name”属性值数组时,下划线的“pull”非常方便。但是,我找不到是否有任何方法在提取时处理该值,这样我就不需要迭代数组并对每个数组调用u.escape 有什么帮助吗?有三个选项供您选择:JavaScript提取并处理数组中的值,javascript,jquery,underscore.js,Javascript,Jquery,Underscore.js,我有一个JavaScript数组,其中包含的对象几乎没有属性。我想从这个数组中创建一个新数组,其中包含对象的“name”属性值。另外,我想通过使用jQuery的quot.escape方法来处理“name” 我可以看到,在获取“name”属性值数组时,下划线的“pull”非常方便。但是,我找不到是否有任何方法在提取时处理该值,这样我就不需要迭代数组并对每个数组调用u.escape 有什么帮助吗?有三个选项供您选择: reduce 一种相当传统的方法是使用reduce-或者ES5的内置方法: //
reduce
一种相当传统的方法是使用reduce
-或者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
。与下划线或ES5的map
不同,$.map
允许您通过返回null
或未定义的将条目从结果数组中删除。因此:
var newArray = $.map(existingArray, function(entry) {
return condition ? entry.relevantProperty : null;
});
用于每个
当然,好的老式for
循环、forEach
调用或调用都没有什么错。后者:
var newArray = [];
_.each(existingArray, function(entry) {
if (condition) {
newArray.push(entry.relevantProperty);
}
});
唯一的缺点是,它不能是一个表达式,因此,如果要传递到函数或其他对象中,前两个表达式有时更合适(尽管使用temp变量并不是世界末日,而且有助于调试)