[['id', '1111'], ['name', 'aaaaa']]
我有一个这样的清单。
{ id: '1111', name: 'aaaa' }
而且,我想将列表格式化为这样的东西。
因此,我尝试使用如下所示的JavaScript方法将列表转换为该格式的对象。
但是,它不起作用!
有人可以告诉我,我做错了什么以及如何解决它,好吗?
const result = [['id', '1111'], ['name', 'aaaaa']].reduce(
(accumulator, list, index) => {
const KEY = list[0];
const VALUE = list[1];
console.log(accumulator)
if(KEY === 'id' || KEY === 'name') {
return accumulator[KEY] = VALUE;
}
return accumulator
},
{
id: '',
name: ''
}
);
{ id: '', name: '' }
1111 // why this is not { id: '1111', name: '' } ???
{ id: '1111', name: 'aaaa' }
答案 0 :(得分:2)
您应该在reduce回调中返回accumulator
,但accumulator[KEY] = VALUE
语句的结果不是accmulator
,因此请删除if子句中的return
关键字:
if(KEY === 'id' || KEY === 'name') {
accumulator[KEY] = VALUE;
}
答案 1 :(得分:1)
此代码返回值...删除return语句。
if(KEY === 'id' || KEY === 'name') {
return accumulator[KEY] = VALUE;
}
要
if(KEY === 'id' || KEY === 'name') {
accumulator[KEY] = VALUE;
}
答案 2 :(得分:1)
只返回一次。在条件中仅设置属性
if(KEY === 'id' || KEY === 'name') {
/*return*/ accumulator[KEY] = VALUE;
// ^^ remove the return
}
否则您不会返回完整的对象