如何返回没有重复项的数组?

时间:2019-07-25 02:19:44

标签: javascript arrays methods reduce

我有一个数组,其中包含某些特定汽车的倍数。我正在尝试返回一个数组,其中每个项目都包含一个,没有重复项。

我使用if...else格式编写了一段有效的代码,但是在JavaScript中使用条件语句无法达到相同的结果。它说list.includes(automobile)不是函数。

const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck'];
let noDuplicates = data.reduce((list, automobile) => {
  if (list.includes(automobile)) {
    return list
  } else {
    return [...list, automobile]
  }
}, []);

console.log(noDuplicates)

此版本带有if...else的版本可以使用,但是我要获得相同结果的努力是使用条件语句,如下所示:

const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck'];
let noDuplicates = data.reduce((list, automobile) => {
   list.includes[automobile] ? list : [...list, automobile]
}, []);

console.log(noDuplicates)

我认为我可能缺少一些括号,或者在错误的位置,但这对我来说似乎是正确的。 if...else语句返回的正是我要查找的内容,["car", "truck", "bike", "walk", "van"],但条件语句却没有。

1 个答案:

答案 0 :(得分:4)

  

为什么我的代码不起作用?

  • 缺少return语句
  • list.includes[automobile]应该是list.includes(automobile)

const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck'];
let noDuplicates = data.reduce((list, automobile) => {
   return list.includes(automobile) ? list : [...list, automobile]
}, []);

console.log(noDuplicates)


您可以简单地使用Set

const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck' ];
let unique = [...new Set(data)]

console.log(unique)