使用JavaScript's Reduce从对象数组创建数组
Using JavaScript's Reduce to create an array from an array of objects
所以下面的代码是我想要实现的:
var arr = [{
name: 'foo',
amount: 2
}, {
name: 'foo',
amount: 4
}, {
name: 'foo',
amount: 6
}, {
name: 'foo',
amount: 1
}, {
name: 'foo',
amount: 5
}, ];
var newArr = arr.reduce(function (a, b) {
return a.push(b.amount);
}, []);
console.log(newArr); // which I'd expect to be [2, 4, 6, 1, 5]
但是这个错误:Uncaught TypeError: Object 1 has no method 'push'
。我知道我可以用.forEach()
做到这一点,但我想知道用.reduce()
是否可能
您需要map
,而不是reduce
:
amounts = arr.map(function(x) { return x.amount })
如果你想要reduce
,它是这样的:
var newArr = arr.reduce(function (a, b) {
a.push(b.amount);
return a;
}, []);
reduce
回调应该返回accumulator对象。
您有一个对象数组。因此,对象当然不知道只能应用于数组的函数push。即使这些是数组,它也不会起作用,因为push返回数组的新长度。你应该使用map而不是reduce来实现你想要做的事情。
相关文章:
- 将数组对象传递到struts2中的操作类
- 如何使用jquery返回php-json数组对象
- 从其名称获取javascript数组对象
- 值未与数组对象绑定
- 如何按数组/对象值的倍数过滤对象数组
- 在表中显示数组对象
- 在数组对象中分组
- 将第二个或多个数组推送到数组对象 AngularJS 中
- 重新排列 JavaScript 数组/对象
- 键上的javascript数组对象过滤器
- handontable:在不更改数据数组/对象的情况下隐藏某些列
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 重建有角度的java脚本数组对象
- 对JSON数组对象进行排序
- 连接与数组对象相关的文本:方式和位置
- 哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
- 如何使用Handlebars循环数组对象和模板
- 是否可以引用JS数组/对象中的另一个元素
- Javascript中的名称索引-数组/对象
- 数组长度不等于数组对象