Cal*_*ton 6 javascript ecmascript-6
我已经在SO上阅读了这个答案,试着去理解我哪里出错了,但还没到达那里.
我有这个功能:
get() {
var result = {};
this.filters.forEach(filter => result[filter.name] = filter.value);
return result;
}
Run Code Online (Sandbox Code Playgroud)
它变成了这样:
[
{ name: "Some", value: "20160608" }
]
Run Code Online (Sandbox Code Playgroud)
对此:
{ Some: "20160608" }
Run Code Online (Sandbox Code Playgroud)
我想,这正是reduce为了什么,我有一个数组,我想在它的末尾有一个值.
所以我想这个:
this.filters.reduce((result, filter) => {
result[filter.name] = filter.value;
return result;
});
Run Code Online (Sandbox Code Playgroud)
但这并不能产生正确的结果.
1)我可以在这里使用Reduce吗?
2)为什么它不能产生正确的结果.
根据我的理解,第一次迭代结果将是一些描述的空对象,但它是数组本身.
那么你将如何在第一次迭代中重新定义 - 这些想法激起了在这种情况下不正确的感觉!
Pra*_*lan 15
将初始值设置为对象
this.filters = this.filters.reduce((result, filter) => {
result[filter.name] = filter.value;
return result;
},{});
//-^----------- here
Run Code Online (Sandbox Code Playgroud)
var filters = [{
name: "Some",
value: "20160608"
}];
filters = filters.reduce((result, filter) => {
result[filter.name] = filter.value;
return result;
}, {});
console.log(filters);Run Code Online (Sandbox Code Playgroud)
var filters = [{
name: "Some",
value: "20160608"
}];
filters = filters.reduce((result, {name, value}= filter) => (result[name] = value, result), {});
console.log(filters);Run Code Online (Sandbox Code Playgroud)