我有这个数组
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]
我该怎么解决它找到计数值的缺失数字
注意*找到计数值的缺失数字
你可以使用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)
使用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)
尝试运行代码片段
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)