具有返回分配的箭头功能即使使用括号也不起作用

时间:2018-03-19 19:32:50

标签: javascript

我有以下过滤器:

const auxHash = {};
myArray.filter(house =>
  house.members === 3 &&
  auxHash[house.id] ? false : auxHash[house.id] = true
)

我得到一个lint错误,说箭头函数不应该返回赋值。我也试过这个:

const auxHash = {};
myArray.filter(house =>
  house.members === 3 &&
  auxHash[house.id] ? false : (auxHash[house.id] = true)
)

但同样的问题。我怎么解决这个问题?

澄清。我正在尝试过滤属性members3不同的数组元素,并且我还尝试根据属性id删除重复元素(这是' s为什么我使用哈希)。

2 个答案:

答案 0 :(得分:1)

在编辑问题之前。

如果使用{}正文,则需要显式返回该函数的结果。

const auxHash = {};
myArray.filter(house => {
    return house.members === 3 && auxHash[house.id] ? false : auxHash[house.id] = true;
})

此外,如果您的对帐单是一行,则可以省略{}部分并删除return

const auxHash = {};
myArray.filter(house => house.members === 3 && auxHash[house.id] ? false : auxHash[house.id] = true)

答案 1 :(得分:0)

您正在重新格式化完全相同的语句并忽略linter的错误。你正在返回作业。那是你的问题。你正在这里做 - private static Encoding encoding = Encoding.UTF8; .... var textReader = new StreamReader(reportCsv, encoding); var csv = new CsvReader(textReader, new Configuration { BadDataFound = null, Delimiter = delimiter, Encoding = encoding });

你的三元结算为假或auxHash[house.id] = true

因此,重构返回实际值 -

auxHash[house.id] = true

你可以更简洁地写出来,但我把它拉出来说清楚。