【发布时间】:2019-08-09 00:33:52
【问题描述】:
我想知道如何在对象而不是数组上使用一些reduce 逻辑。类似于迭代由
[ object_property, property_value ])。
我尝试了一些类似的代码
var obj = { foo: 'bar', bar: 'baz' };
Array.prototype.reduce.call(obj, function(prev, val) {
console.log('new iteration');
// whatever code ...
return prev;
}, []);
但它不执行任何迭代。我不明白为什么。
可能是因为对象属性不可枚举?
有没有办法在对象上运行 reduce 函数?
注意:没有特定的最终目的;我正在探索什么是可能的或更好的模式。
【问题讨论】:
-
Array.prototype.reduce()假定上下文具有length属性和键[0..length - 1] -
预期输出是什么?
-
没有预期的输出;那不是问题。我想知道是否可以使用reduce进行迭代,不管回调中的操作是什么。
-
另外
reduce期望你的回调returns 是累加器的新值。我认为你根本不应该在这里使用reduce。 -
在对象中运行reduce时你想完成什么?期望的最终结果是什么?减少的目标是获得一个独特的价值。如果你想迭代 .map 就更合适了。
标签: javascript arrays reduce enumerable