Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Node.js - Fatal编程技术网

Javascript 如何计算数组中有多少对数字

Javascript 如何计算数组中有多少对数字,javascript,arrays,node.js,Javascript,Arrays,Node.js,我目前正在做这个作业,这让我很烦恼如何计算一个数组中有多少对数字 这是我以前试过的 function pairNumber (n,ar) let numberOfPairs=0 for(let i =0;i<ar.length;i++){ for(let j =1;j<ar.length;j++){ if (ar[i] == ar[j]){ console.log([ar[i],

我目前正在做这个作业,这让我很烦恼如何计算一个数组中有多少对数字

这是我以前试过的

 function pairNumber (n,ar)
  let numberOfPairs=0
    for(let i =0;i<ar.length;i++){
        for(let j =1;j<ar.length;j++){
            if (ar[i] == ar[j]){
                          console.log([ar[i], ar[j]], '<< ini isinya')
                          console.log(ar[i+1], ar[j+1])

                numberOfPairs++
                ar.splice(i,1)
                ar.splice(j,1)
            }
        }
    }

    if(n%3 == 0){
      numberOfPairs -= 1
      return numberOfPairs
    } else {
      return numberOfPairs
    }
}

console.log(sockMerchant(9,[10,20,20,10,10,30,50,10,20]))
console.log(sockMerchant(10,[1,1,3,1,2,1,3,3,3,3]))
正确答案应该是

3
4

对于这两种情况,有人能帮我做我一直缺少的事情吗?谢谢你

由于这是一项简单的作业,我不打算详细解释。问题似乎在循环变量初始化中。
提示:
j=i+1

我只需先对数组进行排序,然后只需将数组循环1次。最好控制你的代码

function pairNumber (n,ar){
        let numberOfPairs=0
        let i = 0
        let j = 1

        ar.sort()
         for(let i = 0; i < ar.length; i++){
             if(ar[i] == ar[i++]){
                 numberOfPairs++
                 i+=1
             }
         }
         return numberOfPairs
     }
函数对号(n,ar){
设numberOfPairs=0
设i=0
设j=1
ar.sort()
for(设i=0;i
要克服O(n2)的二次方法,可以取一个对象并计算发生次数

在结束时,通过只计算最低的一半值来返回总和

函数pairNumber(n,数组){
var numberOfPairs=0,
计数={};
for(设数组的v){
如果(!counts[v])counts[v]=0;
++计数[v];
}
对于(让对象计数。值(计数))numberOfPairs+=计数>>1;
返回数对;
}
log(pairNumber(9[10,20,20,10,10,30,50,10,20]))

console.log(pairNumber(10[1,1,3,1,2,1,3,3])
请添加您的try。循环时不要改变数组,还有
n
的用途吗?
function pairNumber (n,ar){
        let numberOfPairs=0
        let i = 0
        let j = 1

        ar.sort()
         for(let i = 0; i < ar.length; i++){
             if(ar[i] == ar[i++]){
                 numberOfPairs++
                 i+=1
             }
         }
         return numberOfPairs
     }