Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一种比较数组中是否有重复数字的函数_Javascript_Arrays - Fatal编程技术网

Javascript 一种比较数组中是否有重复数字的函数

Javascript 一种比较数组中是否有重复数字的函数,javascript,arrays,Javascript,Arrays,我试图创建一个函数来比较数组中的重复数字,如果存在重复数字,我将返回数组中的这些数字 我就是这么做的,但我还在挣扎 function solution(array) { var a = []; for(var i = 0; i < array.length; i++) { if (array[i] === 1) { a.push(array[i]); } } return a; } alert(sol

我试图创建一个函数来比较数组中的重复数字,如果存在重复数字,我将返回数组中的这些数字

我就是这么做的,但我还在挣扎

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
函数解决方案(数组){
var a=[];
对于(var i=0;i
您有两个数组:一个包含原始数字,另一个包含结果,用于收集重复数字

您正在原始阵列上循环。这是一个良好的开端

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

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


您可能需要另一个循环或另一个数组,可能还需要一个if。

您有两个数组:一个带有原始数字,另一个带有结果,用于收集重复数字

您正在原始阵列上循环。这是一个良好的开端

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

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


您可能需要另一个循环或另一个数组,可能还需要某个if。

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

function solution(array) {
    return array.filter(function(value, index) {
        return array.indexOf(value) < index;
    });
}
函数解决方案(数组){
返回数组.filter(函数(值、索引){
返回数组.indexOf(value)
indexOf
返回元素第一次出现的索引
filter
将函数应用于数组的每个元素一次,并返回一个包含所有元素的新数组,其中函数返回
true

function solution(array) {
    return array.filter(function(value, index) {
        return array.indexOf(value) < index;
    });
}
函数解决方案(数组){
返回数组.filter(函数(值、索引){
返回数组.indexOf(value)
openorclose答案的更快版本:

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

openorclose答案的更快版本:

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

“应返回[1,2,2]”-为什么2出现两次?显示的代码将遍历数组并查找所有===1的值。那不是你想做的,是吗?为什么要和数字1比较?因为我不知道如何将当前循环与过去的数字进行比较,所以我将i占位符放在测试中@bjelli“应该返回[1,2,2]”-既然2是数组中具有重复项的第一个数字,为什么不
[2,1,2]
[2,2,1]
?您是否尝试过嵌套的for循环?“应返回[1,2,2]”-为什么2出现两次?您显示的代码将遍历数组并查找所有===1的值。那不是你想做的,是吗?为什么要和数字1比较?因为我不知道如何将当前循环与过去的数字进行比较,所以我将i占位符放在测试中@bjelli“应该返回[1,2,2]”-既然2是数组中具有重复项的第一个数字,为什么不
[2,1,2]
[2,2,1]
?您是否尝试过嵌套for循环?