Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带返回赋值的箭头函数即使使用括号也不起作用_Javascript - Fatal编程技术网

Javascript 带返回赋值的箭头函数即使使用括号也不起作用

Javascript 带返回赋值的箭头函数即使使用括号也不起作用,javascript,Javascript,我有以下过滤器: const auxHash = {}; myArray.filter(house => house.members === 3 && auxHash[house.id] ? false : auxHash[house.id] = true ) 我得到一个lint错误,它说arrow函数不应该返回赋值。我也试过: const auxHash = {}; myArray.filter(house => house.members === 3

我有以下过滤器:

const auxHash = {};
myArray.filter(house =>
  house.members === 3 &&
  auxHash[house.id] ? false : auxHash[house.id] = true
)
我得到一个lint错误,它说arrow函数不应该返回赋值。我也试过:

const auxHash = {};
myArray.filter(house =>
  house.members === 3 &&
  auxHash[house.id] ? false : (auxHash[house.id] = true)
)
但同样的问题。我怎样才能解决这个问题

澄清。我正在尝试筛选出属性
成员
不同于
3
的数组元素,并且我正在尝试基于属性
id
删除重复元素(这就是我使用哈希的原因)。

编辑问题之前

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

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)

您正在重新格式化完全相同的语句,并忽略linter的错误。您正在返回作业。这是你的问题。你就在这里做-
auxHash[house.id]=true

您的三元解析为false或
auxHash[house.id]=true

因此,重构以返回实际值-

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

您可以更简洁地编写它,但我将其展开以明确说明。

当您使用{}它是有效的JavaScript时,没有返回,但当用作箭头函数的返回值时,它不是好代码,正如错误所述……更新后,我没有使用
{}
尽管我也用explicit
return
尝试过。如果我按照你的建议去做,linter会抱怨的。仍然说这不应该返回赋值。linter是对的,通常你不应该修改过滤器函数中的数组元素。我不是在修改数组元素。我正在修改未筛选的哈希。