gpt4 book ai didi

javascript - Codewars Challenge - JavaScript - 查找数组中的第一个非连续数字

转载 作者:行者123 更新时间:2023-12-04 00:58:56 25 4
gpt4 key购买 nike

Link to Codewars challenge

这是非常基本的,但由于某种原因,我无法弄清楚为什么我无法返回 null当有不是 数组中任何不连续的数字。当数组不完全连续时,我的代码可以正常工作:

function firstNonConsecutive(arr) {
for (let i = 0; i < arr.length; i++) {
if (arr[i + 1] - arr[i] !== 1) {
return arr[i + 1];
}
}
return null;
}


console.log(firstNonConsecutive([ 0, 1, 2, 3, 4, 6, 7, 8, 9 ]));


但是如果数组是连续的,即像这样:

function firstNonConsecutive(arr) {
for (let i = 0; i < arr.length; i++) {
if (arr[i + 1] - arr[i] !== 1) {
return arr[i + 1];
}
}
return null;
}

console.log(firstNonConsecutive([ 6, 7, 8, 9, 10, 11, 12 ]));


可以看到返回 undefined而不是 null .为什么它不返回null?返回在 for 循环之外。

我尝试创建一个初始检查以查看数组是否不连续,如下所示:

function firstNonConsecutive(arr) {
let newArr = [];
for (let j = arr[0]; j < arr[arr.length - 1]; j++) {
newArr.push(j);
}
//check if arr does not contain consecutive characters
if (String(arr) !== String(newArr)) {
for (let i = 0; i < arr.length; i++) {
if (arr[i + 1] - arr[i] !== 1) {
return arr[i + 1];
}
}
}
else {
return null;
}
}
console.log(firstNonConsecutive([ 0, 1, 2, 3, 4, 6, 7, 8, 9 ]));


但这并没有什么不同。有任何想法吗?

最佳答案

我建议从第二项开始,检查元素和之前的元素。

这种方法不会更改要检查的长度,并且省略了检查不存在元素的问题。

function firstNonConsecutive(arr) {
for (let i = 1; i < arr.length; i++) {
if (arr[i - 1] + 1 !== arr[i]) return arr[i];
}
return null;
}

console.log(firstNonConsecutive([0, 1, 2, 3, 4, 6, 7, 8, 9]));
console.log(firstNonConsecutive([0, 1, 2, 3, 4, 5, 6, 7, 8]));

关于javascript - Codewars Challenge - JavaScript - 查找数组中的第一个非连续数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60266851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com