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(“”)]
。谢谢