JavaScript提取并处理数组中的值
JavaScript pluck and process values in an array
我有一个JavaScript数组,其中包含一些属性较少的对象。我想从这个数组中创建一个新数组,其中包含对象的"name"属性值。此外,我想使用jQuery的_.sescape方法来处理"名称"。
我可以看到,在获取一组"name"属性值时,下划线的"提取"非常方便。然而,我找不到是否有任何方法可以在提取时处理该值,这样我就不需要迭代数组并对每个数组调用_.eescape。
有什么帮助吗?
三个选项可供选择:
reduce
一种相当传统的方法是使用reduce
—Undercore或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
。与Undercore或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);
}
});
唯一的缺点是它不能是一个表达式,所以如果你要传递到一个函数或其他东西中,前两个表达式有时更合适(尽管使用临时变量并不是世界末日,而且有助于调试)。
相关文章:
- javascript处理一个对象数组以获得一个新的对象数组
- call()和apply()实际上是用来欺骗方法处理类似数组的对象的
- 在JavaScript中处理数组和对象时需要帮助
- 处理docXTemplater或javascript对象数组中未定义的值
- Emberjs#每个循环不处理数组数据
- 如何在angular js/HTML中处理数组
- 处理对象数组并将它们以 4 个为一组进行分配
- AngularJS错误处理:根据错误数组显示错误
- JavaScript-在数组中查找元素,并从用户提示中处理null
- 按子数组处理数组
- 使用数组处理 JavaScript 字符串 为什么它在控制台上打印“R”而不是“Z”
- 二维数组处理
- 用javascript(服务器端)将大型CSV文件转换为JSON数组:处理内存不足问题
- Javascript:将数组处理成对象(按角度)
- Javascript (JQuery)将数组处理为汇总数据的最优算法
- 如何将数组处理为获取STR到url
- Node.js for循环并行数组处理,只有一个回调
- 从PHP到Javascript的数组处理
- JavaScript数组处理-ActiveX与FF插件
- 为什么属性初始化为null的对象数组处理得更好