Javascript 从1..N项数组中查找缺少的项

Javascript 从1..N项数组中查找缺少的项,javascript,ecmascript-6,Javascript,Ecmascript 6,我被要求从1..N数组中查找缺少的数字 例如,对于数组:让numar=[2,4,6,8,3,5,1,9,10]缺少的号码是7 let numArr=[2,4,6,8,3,5,1,9,10]; numArr.sort(function(a,b){ //sort numArr return a-b; }); let newNumArr=[]; for(let i=1;i<=10;i++){ newNumArr.push(i); } for(let i=0;i<newNumA

我被要求从
1..N
数组中查找缺少的数字

例如,对于数组:
让numar=[2,4,6,8,3,5,1,9,10]缺少的号码是
7

let numArr=[2,4,6,8,3,5,1,9,10];
numArr.sort(function(a,b){  //sort numArr
  return a-b;
});

let newNumArr=[];
for(let i=1;i<=10;i++){
  newNumArr.push(i);
}

for(let i=0;i<newNumArr.length;i++){  //compare with new arr
  if(newNumArr[i] !== numArr[i]){
    console.log('The missing num is:'+newNumArr[i]);  //The missing num is:7
    break;
  }
}
let numArr=[2,4,6,8,3,5,1,9,10];
sort(函数(a,b){//sort numar
返回a-b;
});
设newNumArr=[];

对于(设i=1;i使用
。查找

函数查找管理(输入){
输入.排序((a,b)=>a-b);
const first=输入[0];
返回input.find((num,i)=>first+i!==num)-1;
}
log(findMissing([2,4,6,8,3,5,1,9,10]);

console.log(findMissing([3,4,5,6,8,9,2]);
您可以使用连续的
n
数之和的简单逻辑是
n*(n+1)/2
。从上面减去数组数之和将得到缺少的数

let numArr=[2,4,6,8,3,5,1,9,10];
var sum=numArr.reduce((a,c)=>a+c,0);
//由于数组包含n-1个数字,这里n将是numar.length+1

console.log(((numar.length+1)*(numar.length+2))/2-sum);
您可以使用
MAP
FILTER
查找单独数组中缺少的数字

const numArr = [2, 4, 6, 8, 3, 5, 1, 9, 10];
const missingNumberArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(number => {
    if (!numArr.includes(number)) {
        return number;
    }
}).filter(y => y !== undefined);

您可以使用
XOR
功能

  • XOR
    所有数组元素,让XOR的结果为
    arr\u XOR
  • XOR
    所有从1到n的数字,设XOR为
    interval\uxor
  • arr\u XOR
    XOR
    interval\u XOR
    给出缺少的数字
let numArr=[2,4,6,8,3,5,1,9,10];
函数getMissingNo(arr){
arr=arr.sort()
n=arr.length
arr_xor=arr[0]
区间xor=1
对于(i=0;i对于(i=0;i最适合codereview。此外,从您提出的问题来看,除非您这样说,否则不清楚7是否为缺失的数字。请尝试重新编写它以适合您编写的代码。这是错误的,因为它不会显示是否缺失了1或10。它排除了缺失的范围边缘。您能解释第三个l吗ine?@user8544通过保存对数组中第一个元素的引用,迭代数组并检查元素编号是否等于(数组索引+第一个),将通知您是否已找到缺少的元素。