JavaScript:我如何在Array中打印缺少的数字

时间:2016-04-15 10:40:49

标签: javascript arrays

如果我想构建一个数组,那么Array的元素是1到N + 1, 并找出缺少的数字?

例如:[1,3,4,5],应打印2

示例:

function solution(arr) {
    // find the missing number and return
}

console.log(solution([1,3,4,5])); // 2

6 个答案:

答案 0 :(得分:0)

var size = arr.length;
var last_num = arr[length-1];
var missing = "";
for (var i = 1; i<last_num; i++){
   if (arr.indexOf(i)<0){
      missing += i;
   }
}
console.log(missing);

答案 1 :(得分:0)

var array = [1,3,4,5];
for (var i=0; i<=array.length-1; i++) {
    if (i+1 != array[i]) {
        return i;
    }
}

答案 2 :(得分:0)

像这样的东西)所以simlpe任务 - 我认为你可以自己做但是)))

var solution = function (array) { 
      array.map(function (item,i) { 
        if((array[i+1] - array[i]) > 1) 
           console.log(array[i] + 1) }) 
        }; 

答案 3 :(得分:0)

如果您正在使用lodash或者可以将其包含在您的项目中,则以下内容将有效:

function miss_val(k){
   var n=k.length+1;
   var sum=n*(n+1)/2;
   var sum2=k.reduce(function(a,b){return(a+b)});
   var miss=sum-sum2;
   console.log(miss);


}
miss_val([1,2,3,5]);

答案 4 :(得分:0)

你可以这样做

{{1}}

答案 5 :(得分:0)

我建议使用Array#reduce(),因为它可以在数组中返回可变数量的缺失项。

function missing(r, a, i, aa) {
    var n = aa[i - 1] + 1;
    while (n < a) {
        r.push(n++);
    }
    return r;
}

document.write('<pre>' + JSON.stringify([1, 3, 4, 5].reduce(missing, []), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify([0, 5].reduce(missing, []), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify([1, 2, 3].reduce(missing, []), 0, 4) + '</pre>');