如何为以下代码行修复 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);
此代码运行正确(将对象数组转换为对象对象)
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);