Javascript 对累加器调用Array.includes()会引发TypeError。减少

Javascript 对累加器调用Array.includes()会引发TypeError。减少,javascript,Javascript,我试图减少包含任何重复单词的数组。尝试返回结果时,我得到以下错误TypeError:acc.includes不是函数。我解释错误的方式是,由于所使用的JavaScript版本,该方法不适用于数组acc 我的假设正确吗,还是这里发生了其他事情 function removeDuplicateWords (s) { return s.split(" ").reduce(function(acc, value, index, array) { if (array.indexOf(value

我试图减少包含任何重复单词的数组。尝试返回结果时,我得到以下错误
TypeError:acc.includes不是函数
。我解释错误的方式是,由于所使用的JavaScript版本,该方法不适用于数组
acc

我的假设正确吗,还是这里发生了其他事情

function removeDuplicateWords (s) {
  return s.split(" ").reduce(function(acc, value, index, array) {
    if (array.indexOf(value) === array.lastIndexOf(value)) {
      return acc.push(value);
    } else {
        return !acc.includes(value) ? acc.push(value) : "";
    }
  }, [])
}

您没有在函数中返回数组。无论您从
reduce()
的回调返回什么,它都将成为下一次迭代的
acc
。您需要返回数组

push()

函数删除的重复字{
返回s.split(“”).reduce(函数(acc、值、索引、数组){
if(array.indexOf(value)==array.lastIndexOf(value)){
返回[…acc,值]
}否则{
return!acc.includes(value)?[…acc,value]:acc;
}
}, [])
}

log(RemovedUpplicateWords(“hello-hello-hey”)
您可以使用
过滤器,如下所示<代码>过滤器
有三个参数
索引
数组
。而
indexOf
将返回第一次出现的值的索引。所以它总是返回第一个值,这样重复的值就会被删除

函数删除的重复字{
返回s.split(“”)过滤器((x,i,a)=>a.indexOf(x)==i);
}

log(RemovedUpplicateWords(“hello-hello-hey”)这无法工作:
返回acc.push(值)
返回一个整数,但回调必须返回累加器数组。你能用真实的输入和预期的输出来展示一个例子吗?除此之外,您似乎可以将数组转储到一个集合中,以便更轻松地删除重复项:
[…新集合(s.split(“”)]
。谢谢