首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >打印出数组中的所有重复项- Javascript -还需要函数的时间/空间复杂性

打印出数组中的所有重复项- Javascript -还需要函数的时间/空间复杂性
EN

Stack Overflow用户
提问于 2019-03-13 03:27:50
回答 5查看 86关注 0票数 0

尝试打印出任何重复的值。在可视化我需要做的事情上有问题。这不管用。

这不同于任何其他类似的问题,因为我希望打印所有重复的值,而不仅仅是有重复的值。

您还能给出结果的时间/空间复杂度吗?

这应该打印出2,2,4,4,7,7

代码语言:javascript
复制
const printDuplicates = (arr) => {
  let newArray = [];

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === arr[i] + 1) {
      newArray.push(arr[i]);
    }
  }
  return newArray
}

console.log(printDuplicates([1, 2, 2, 4, 4, 5, 6, 7, 7, 8, 9]));

顺便说一句,我很感谢大家的帮助

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-03-13 03:32:32

试试这个:

代码语言:javascript
复制
let arr = [1, 2, 2, 4, 4, 5, 6, 7, 7, 8, 9];
result = arr.filter(x => arr.filter(y => y == x).length > 1)
console.log(result);

filter函数接受一个函数作为参数。此函数将数组中的每个元素作为参数,并应返回一个布尔值,指示该元素是否应包含在结果数组中。

因此,我们使用一个函数来计算该元素在数组中的出现次数,如果该元素多次出现,则返回true,否则返回false。

此发生计数器也是使用filter函数编写的。

更新:

这部分只是一个统计arrx元素出现次数的函数

代码语言:javascript
复制
arr.filter(y => y == x).length

因此,我们在filter函数中使用它来决定是否要保留一个元素(如果它多次出现,则保留它)。为了保留一个元素,我们应该在filter函数中为它返回true。

票数 0
EN

Stack Overflow用户

发布于 2019-03-13 03:36:03

这里有一种方法-尽管我必须承认它不是最优雅的,但最容易理解的:

代码语言:javascript
复制
const printDuplicates = (arr) => {
  let newArray = [];
  let valToCompare;
  for (let i = 0; i < arr.length; i++) {
    valToCompare = arr[i];
    for (let j = 0; j < arr.length; j++) {
      if (i != j && arr[j] == valToCompare) {
        newArray.push(arr[j]);
      }
    }
  }
  return newArray;
}

console.log(printDuplicates([1, 2, 2, 4, 4, 5, 6, 7, 7, 8, 9]));
票数 1
EN

Stack Overflow用户

发布于 2019-03-13 03:39:38

如果重复项是相邻的,并且您希望显示它们(包括重复项)。

代码语言:javascript
复制
const printDuplicates = (arr) => arr.filter((_,indx) => arr[indx] === arr[indx+1] || arr[indx] === arr[indx-1]);

console.log(printDuplicates([1, 2, 2, 4, 4, 5, 6, 7, 7, 8, 9]));

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55129324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档