我需要找到数组中缺少的数字。这里有很多类似的问题,我都检查了一下,但是找不到适合我的代码。对我的问题的最接近答案是:
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]整数。
答案 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; }