javascript在数组中找到缺少的数字

Мак*_*ков 6 javascript arrays

我有这个数组

var a = [5] , count  = 5;
Run Code Online (Sandbox Code Playgroud)

我想知道这个数组(a)上缺少的数字,结果必须是

1,2,3,4

我只是尝试这个但失败了

var missing = [];

for ( var j = 0; j < a.length; j++ ) {
    for ( var i = 1; i <= count; i++ ) {
        if (a[j] != i) {
            missing.push( i );
        }
    }      
}
Run Code Online (Sandbox Code Playgroud)

我马上打电话给它

1,2,3,4

为(a)数组添加一些值

a = [2,3,4,5] 
Run Code Online (Sandbox Code Playgroud)

它给我这个

[1,3,4,5,1,2,4,5,1,2,3,5,1,2,3,4]

我该怎么解决它找到计数值的缺失数字

注意*找到计数值的缺失数字

ADr*_*-DJ 9

你可以使用indexOf函数来做到这一点:

var a = [5], count = 5;
var missing = new Array();

for(var i=1;i<=count;i++) {
    if(a.indexOf(i) == -1){
        missing.push(i);
    }
}
console.log(missing); // to check the result.
Run Code Online (Sandbox Code Playgroud)


小智 6

一行 ES6 riff:

let missingNumbers = (a, l=true) => Array.from(Array(Math.max(...a)).keys()).map((n, i) => a.indexOf(i) < 0  && (!l || i > Math.min(...a)) ? i : null).filter(f=>f);
Run Code Online (Sandbox Code Playgroud)

默认情况下,返回多个数字序列中缺失的数字:

array = [2, 5, 9]
missingNumbers(array)
// returns [3, 4, 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)

但是您可以将低值标志设置为 false 并获得以 1 开头的结果:

missingNumbers(array, false)
// returns [1, 3, 4, 6, 7, 8]

missingNumbers([5])
// returns [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

或者简单地定义没有标志的函数

let missingNumbers = (a) => Array.from(Array(Math.max(...a)).keys()).map((n, i) => a.indexOf(i) < 0? i : null).filter(f=>f);
Run Code Online (Sandbox Code Playgroud)


Pra*_*lan 5

使用indexOf()检查元素的数组或不

var a = [5],
  count = 5,
  missing = [];

for (var i = 1; i <= count; i++) {
  if (a.indexOf(i) == -1) {
    missing.push(i);
  }
}

document.write('<pre>' + JSON.stringify(missing) + '</pre>');
Run Code Online (Sandbox Code Playgroud)


kol*_*nar 5

尝试运行代码片段

var a = [1,4,7], count = a[a.length - 1];
var missing = [];
for ( var i = 1; i <= count; i++ ) {
	if (a.indexOf(i) == -1) {
		missing.push(i);
	}
}
alert(missing.toString());
Run Code Online (Sandbox Code Playgroud)


小智 5

处理动态 MIN 和 MAX 数字以查找数组中缺失数字范围的更好方法

const findMissing = num => {
  const max = Math.max(...num); // Will find highest number
  const min = Math.min(...num); // Will find lowest number
  const missing = []

  for(let i=min; i<= max; i++) {
    if(!num.includes(i)) { // Checking whether i(current value) present in num(argument)
      missing.push(i); // Adding numbers which are not in num(argument) array
    }
  }
  return missing;
}

findMissing([1,15]);
Run Code Online (Sandbox Code Playgroud)