一个函数,用于比较数组中是否存在重复的数字

A function that compare if there is duplicate numbers in a array

本文关键字:存在 是否 数字 数组 比较 一个 函数 用于      更新时间:2023-09-26

我正在尝试创建一个函数来比较数组中的重复数字,如果有重复的数字,我会在数组中返回这些数字。

这就是我所做的,但我正在挣扎。

function solution(array) {
    var a = [];
    for(var i = 0; i < array.length; i++) {
        if (array[i] === 1) {
            a.push(array[i]);
        }
    }
    return a;
}
alert(solution([1, 2, 3, 4, 5, 1]));


solution([2, 1, 1, 2, 2]); //Should return [1, 2, 2]. Because 2, 1 are original documents and 1, 2, 2 - are copies

> indexOf 返回元素第一次出现的索引。 filter 将函数应用于数组的每个元素一次,并返回函数返回 true 的所有元素的新数组。

function solution(array) {
    return array.filter(function(value, index) {
        return array.indexOf(value) < index;
    });
}

您有两个数组:一个包含原始数字,另一个包含结果,您可以在其中收集重复的数字。

您正在循环访问原始数组。这是一个良好的开端。

数组[i] 是原始数组的当前编号。

你怎么知道它是否已经发生过,因此是重复的? 这是你必须弄清楚的算法的下一步。

您可能需要另一个循环或另一个数组,并且可能需要某个地方的 IF。

openorclose的答案的稍快版本:

function solution(array) {
   return array.filter(function(value, index) {
      return array.indexOf(value, index + 1) > -1;
   });
}