我有一个为我改变对象的功能,我想知道它是如何工作的,如果有人可以解释它或指向正确的方向,我将不胜感激。这是功能:
$scope.filteredObject = Object.keys($scope.filterObject).reduce(function(p, collection) {
var values = $scope.filterObject[collection];
p[collection] = Object.keys(values).filter(function(key) {
return values[key] === true;
}).map(function(key) {
return key;
});
return p;
}, {});
所以这很好用,但我想知道函数末尾的}, {});
究竟是什么。我不完全确定它的名称,并在javascript 中的函数之后google“ }, {}
”似乎混淆了google(lol)的地狱。谢谢!
答案 0 :(得分:3)
}
- anoymous函数表达式function(p, collection) { … }
,
- 多个参数之间的分隔符{}
- (空)object literal,第二个参数)
- 函数调用结束,将参数列表的括号括起来.reduce(…)
答案 1 :(得分:1)
它是一个空对象,与函数无关。 看看Array.prototype.reduce()
reduce函数有第二个可选参数。
arr.reduce(callback[, initialValue])
所以在你的情况下,它是这样的:
callback = function(p, collection) { /*...*/ };
initialValue = {}; // could also be new Object()
希望这会有所帮助:)