如何为以下代码行修复 Es-lint "no-return-assign"

how to fix Es-lint "no-return-assign" for the following line of code

此代码运行正确(将对象数组转换为对象对象)

ES-lint 然而给出了这个错误:

[eslint] Arrow function should not return assignment. (no-return-assign)

请问如何重写以满足 es-lint

var x = arr.reduce((obj, item) => (obj[item.userid] = item, obj), {})

你可以使用Object.assign

var x = arr.reduce((obj, item) => Object.assign(obj, {[item. userid]: item}), {})

就我个人而言,我喜欢代码更冗长一点,因为单行代码今天看起来非常聪明,但下周我必须回来修复其中的一个错误非常相同的地方,需要一段时间才能理解我在做什么,更不用说是否是其他人必须修复它了。

我会这样写:

var x = arr.reduce((obj, item) => {
    obj[item.userid] = item;
    return obj;
}, {});

这里有一个带有一些虚拟数据的代码段来测试它。

var arr = [
        {userid: 11},
        {userid: 12},
        {userid: 13},
        {userid: 14},
    ];

var x = arr.reduce((obj, item) => {
    obj[item.userid] = item;
    return obj;
}, {});

console.log(x);