如何在数组中查找缺失的数字

时间:2018-12-20 12:27:07

标签: javascript arrays

我需要找到数组中缺少的数字。这里有很多类似的问题,我都检查了一下,但是找不到适合我的代码。对我的问题的最接近答案是:

numbers.sort((a, b) => a - b);
miss = Array.from({
            length: numbers[numbers.length - 1] - numbers[0] + 1
        },
        (_, idx) => numbers[0] + idx)
    .filter(elem => !numbers.includes(elem));
console.log(miss.join(','));

在这种情况下它可以正常工作:

数字= [4、3、2、7、8、2、3、1] //打印5、6

numbers = [1、2、3、3、5] //打印4

但在下一种情况下:

numbers = [1,1,1,1,1,1,1,1] //不返回任何内容

我需要返回2、3、4、5、6、7、8

编辑:需要查找未出现在此数组中的所有[1,N]整数。

4 个答案:

答案 0 :(得分:1)

const missingValues = (numbers) => {
  let size = numbers.length
  let result = []
  for (i = 1; i < size + 1; i++) {
    if (!numbers.includes(i)) {
      result.push(i)
    }
  }
  console.log(result.join(','));
}

let numbers = [1, 1, 1, 1, 1, 1, 1, 1] 
missingValues(numbers)


numbers = [4, 3, 2, 7, 8, 2, 3, 1] 

missingValues(numbers)

答案 1 :(得分:1)

此代码将搜索缺失的数字,具体取决于给定数组的长度。

function calculate(input) {
    let result = list()

    // We will start with i=1, since 0 isn't in our scope.
    // The last value in our scope should be i <= input.length
    for(i=1; i<= input.length;i++){

      // Comparing if current number of for-loop is inside given array.
      if (!input.includes(i)){

         // If that's the case, add missing number to result-list.
         result.push(i);
      }
    }

    console.log(result)
}

答案 2 :(得分:0)

检查数组中1到9之间的数字是否丢失

let ar = [1, 1, 1, 1, 1, 1, 1, 1]
let nope = []

for(i=1;i<=9;i++){
  if (!ar.includes(i)) nope.push(i)
}

console.log(nope)
console.log(nope.join(", "))

答案 3 :(得分:0)

您可以将1作为最小值,并检查数组的长度(如果该值存在或不存在),然后将其添加到缺少的值中。

function getMissingValues(array) {
    var v = 1,
        i = array.length,
        result = [];

    while (i--) {
        if (!array.includes(v)) result.push(v);
        ++v;
    }
    return result;
}

console.log(getMissingValues([4, 3, 2, 7, 8, 2, 3, 1])); // 5, 6
console.log(getMissingValues([1, 2, 3, 3, 5]));          // 4
console.log(getMissingValues([1, 1, 1, 1, 1, 1, 1, 1])); // 2, 3, 4, 5, 6, 7, 8
.as-console-wrapper { max-height: 100% !important; top: 0; }