为什么这种简化方法不能反馈给我?

时间:2017-10-10 02:04:55

标签: javascript node.js

[['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: ''
    }
);

从console.log(累加器)

中记录
{ id: '', name: '' }
1111 // why this is not { id: '1111', name: '' } ???

预期结果

{ id: '1111', name: 'aaaa' }

3 个答案:

答案 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
}

否则您不会返回完整的对象