开发者问题收集

简单的解决方案是删除 JS 数组中的重复项。必须使用 push 或 pop 和 forEach

2020-03-16
561

所以,我还在学习,所以请原谅它的简单性。但我正在尝试编写一个名为 uniq(arr) 的函数。如果它有效,它将返回一个没有任何重复值的新数组。它不应该更改原始数组。

这里有两个当前不起作用的测试调用。我不确定错误意味着什么 > uniq([1, 2, 3]) 预期:[1, 2, 3] 但得到:

TypeError: undefined is not an object (evaluating 'copy.includes')

> uniq(['a', 'a', 'b']) 预期:['a', 'b'] 但得到:TypeError:undefined 不是对象(评估“copy.includes”)

function uniq(arr) {
  var copy;
  arr.forEach(function(item) {
    if (!copy.includes(item)) {
      push.copy(item);}})
  return copy
}
2个回答

Set 使数组唯一。

const unique = (arr) => {
  return [... new Set(arr)];
}

console.log(unique([1, 2, 3, 3, 2, 5]))
// Output: [1, 2, 3, 5]
Sajeeb Ahamed
2020-03-16

您的代码有2个问题。 初始错误来自没有值的复制。您需要给它一个空数组的值,以便能够在其上调用数组方法,例如

618649632

第二个错误是您如何使用 push 方法。您需要调用push on onarray,而不是相反(请参见下文)

063521981

修复这些工作示例

110442630
Oliver
2020-03-28