Javascript 在数组JS中查找三个重复项

Javascript 在数组JS中查找三个重复项,javascript,arrays,Javascript,Arrays,当前代码不工作。我想提醒所有3个相等数字的序列 function myFunction() { var fruits = [3, 3, 3, 5, 4, 6, 8, 9]; var a = fruits.sort(); document.getElementById("demo").innerHTML = a; for(var i = 0, j = 1, k = 2; i < fruits.length, j < fruits.length, k &l

当前代码不工作。我想提醒所有3个相等数字的序列

function myFunction() {
    var fruits = [3, 3, 3, 5, 4, 6, 8, 9];
    var a = fruits.sort();
    document.getElementById("demo").innerHTML = a;
    for(var i = 0, j = 1, k = 2; i < fruits.length, j < fruits.length, k < fruits.length; i++, j++, k++){
        if(fruits[i].valueOf() == fruits[j].valueOf() == fruits[k].valueOf()){
            alert(fruits[i].valueOf()+" "+fruits[j].valueOf() +" "+fruits[k].valueOf());
        }
    }
}
函数myFunction(){
var fruits=[3,3,3,5,4,6,8,9];
var a=fruits.sort();
document.getElementById(“demo”).innerHTML=a;
对于(变量i=0,j=1,k=2;i
您可以尝试以下选项:

for(var i = 0; i < fruits.length; i++){
    if(fruits[i] === fruits[i+1] && fruits[i] === fruits[i+2]){
       //msg
       alert('found!');
    }
}
for(var i=0;i
您可以尝试以下选项:

for(var i = 0; i < fruits.length; i++){
    if(fruits[i] === fruits[i+1] && fruits[i] === fruits[i+2]){
       //msg
       alert('found!');
    }
}
for(var i=0;i
试试这个:

var fruits = [3, 3, 3, 5, 4, 6, 8, 9];
var a = fruits.sort();

var cursor = 0;
var arraySize = fruits.length;
while(cursor < arraySize - 3){
 //big step:
  if(a[cursor] == a[cursor + 1] && a[cursor] == a[cursor + 2]){
    console.log(a[cursor]);
    cursor = cursor + 3;    
    continue;  
   }
 //medium step:
  if(a[cursor] == a[cursor + 1]){
    cursor = cursor + 2;
    continue;  
  }

  cursor++;
}
var fruits=[3,3,3,5,4,6,8,9];
var a=fruits.sort();
var=0;
var arraySize=果长;
while(光标
它的输出将是3(因为元素有3个连续出现)

尝试以下操作:

var fruits = [3, 3, 3, 5, 4, 6, 8, 9];
var a = fruits.sort();

var cursor = 0;
var arraySize = fruits.length;
while(cursor < arraySize - 3){
 //big step:
  if(a[cursor] == a[cursor + 1] && a[cursor] == a[cursor + 2]){
    console.log(a[cursor]);
    cursor = cursor + 3;    
    continue;  
   }
 //medium step:
  if(a[cursor] == a[cursor + 1]){
    cursor = cursor + 2;
    continue;  
  }

  cursor++;
}
var fruits=[3,3,3,5,4,6,8,9];
var a=fruits.sort();
var=0;
var arraySize=果长;
while(光标
它的输出将是3(因为元素连续出现3次)

试试这个

for(var i = 0; i < fruits.length; i++) {
if(( fruits[i+1] !== null ) && (fruits[i] === fruits[i+1])) {
    if(( fruits[i+2] !== null ) && (fruits[i] === fruits[i+2])) {
          // your message 
          alert('');
      }
   }
}
for(var i=0;i
试试这个

for(var i = 0; i < fruits.length; i++) {
if(( fruits[i+1] !== null ) && (fruits[i] === fruits[i+1])) {
    if(( fruits[i+2] !== null ) && (fruits[i] === fruits[i+2])) {
          // your message 
          alert('');
      }
   }
}
for(var i=0;i
使用无序扩展示例数组、
array.slice
array.indexOf
数组的解决方案。一些
函数:

function myFunction() {
    var fruits = [3, 3, 5, 3, 4, 6, 8, 9, 9, 7, 9],
        len = fruits.length, k = 0, notEqual = false, sequence;

    fruits.sort();
    while (k <= len) {
        sequence = fruits.slice(k, k + 3);
        if (sequence.length < 3) break;
        notEqual = sequence.some((v, k, arr) => arr.indexOf(v) !== 0);
        if (!notEqual) {   // check if all numbers in the sequence are equal
            console.log(sequence);
            k += 2;
        } else {
            k += 1;
        }
    }
}

myFunction();

使用无序扩展示例数组、
array.slice
array.indexOf
数组的解决方案。一些
函数:

function myFunction() {
    var fruits = [3, 3, 5, 3, 4, 6, 8, 9, 9, 7, 9],
        len = fruits.length, k = 0, notEqual = false, sequence;

    fruits.sort();
    while (k <= len) {
        sequence = fruits.slice(k, k + 3);
        if (sequence.length < 3) break;
        notEqual = sequence.some((v, k, arr) => arr.indexOf(v) !== 0);
        if (!notEqual) {   // check if all numbers in the sequence are equal
            console.log(sequence);
            k += 2;
        } else {
            k += 1;
        }
    }
}

myFunction();

我可以看出代码中有两个主要问题

1) 如果条件在循环中:

if(fruits[i].valueOf() == fruits[j].valueOf() == fruits[k].valueOf())
此条件将始终为false,因为当它与两个值进行比较时,结果将为false或true,然后再次将false和true与每次都为false的值进行比较,即(true==3)结果:false

2) 我可以看到您正在使用的alerts valueOf方法中,您不需要它,您可以直接使用[I]来获取值

function myFunction() {
var fruits = [3, 3, 3, 5, 4, 6, 8, 9];
var a = fruits.sort();
document.getElementById("demo").innerHTML = a;
for(var i = 0, i < fruits.length-3;i++){

        if((fruits[i] == fruits[i+1]) &&(fruits[i]== fruits[i+2])){
        alert(fruits[i]+" "+fruits[i+1] +" "+fruits[i+2]);
    }
}}
函数myFunction(){
var fruits=[3,3,3,5,4,6,8,9];
var a=fruits.sort();
document.getElementById(“demo”).innerHTML=a;
对于(var i=0,i
我可以看出代码中存在两个主要问题

1) 如果条件在循环中:

if(fruits[i].valueOf() == fruits[j].valueOf() == fruits[k].valueOf())
此条件将始终为false,因为当它与两个值进行比较时,结果将为false或true,然后再次将false和true与每次都为false的值进行比较,即(true==3)结果:false

2) 我可以看到您正在使用的alerts valueOf方法中,您不需要它,您可以直接使用[I]来获取值

function myFunction() {
var fruits = [3, 3, 3, 5, 4, 6, 8, 9];
var a = fruits.sort();
document.getElementById("demo").innerHTML = a;
for(var i = 0, i < fruits.length-3;i++){

        if((fruits[i] == fruits[i+1]) &&(fruits[i]== fruits[i+2])){
        alert(fruits[i]+" "+fruits[i+1] +" "+fruits[i+2]);
    }
}}
函数myFunction(){
var fruits=[3,3,3,5,4,6,8,9];
var a=fruits.sort();
document.getElementById(“demo”).innerHTML=a;
对于(var i=0,i
Hmm您可以这样做,但从v0.0.1开始,仅适用于单个数字

var fruits=[3,3,3,5,4,6,8,9,6,6],
triple=fruits.join(“”).match(/(\d)\1\1/g.map(e=>e.split(“”).map(e=>e*1));

document.write(JSON.stringify(triple))Hmm您可以这样做,但从v0.0.1开始,它只适用于单个数字

var fruits=[3,3,3,5,4,6,8,9,6,6],
triple=fruits.join(“”).match(/(\d)\1\1/g.map(e=>e.split(“”).map(e=>e*1));
document.write(JSON.stringify(triple))