gpt4 book ai didi

Javascript - 如何检查3个数字是否连续并返回起点?

转载 作者:数据小太阳 更新时间:2023-10-29 06:03:04 25 4
gpt4 key购买 nike

如果我有一个 [1, 2, 3, 5, 10, 9, 8, 9, 10, 11, 7] 数组,并且想要找到 3 个连续数字的每个案例 (无论是上升还是下降),我该怎么做?

第二部分将是用每个序列的索引提醒一个数组。

例如。之前的数组将返回 [0,4,6,7]

到目前为止我有这个......这是一个艰难的开始

var arr = [1, 2, 3, 5, 10, 9, 8, 9, 10, 11, 7];
var results = [];

for (var i = 1; i < arr.length; i++) {
if ((arr[i] - arr[i-1] != 1) && (arr[i] - arr[i+1] != 1)) {
results.push(arr[i]);
}

}
alert(results);

感谢您的帮助!

感谢您提供 math.abs 指针。这就是我最终做的:

var array = [1, 2, 3, 5, 10, 9, 8, 9, 10, 11, 7];
var indexes = [];

for(var i=0; i < array.length; i++) {
var diff = array[i+1] - array[i];
if(Math.abs(diff)==1 && array[i+1]+diff == array[i+2]) {
indexes.push(i);
}
}
alert(indexes);

最佳答案

了解此任务的上下文也很有趣...无论如何,这是我的解决方案:

var arr     = [1, 2, 3, 5, 10, 9, 8, 9, 10, 11, 7];
var results = [];
var limit = arr.length - 1;

var sequence = 0;
for (var i = 0; i < limit; ++i) {
var diff = arr[i+1] - arr[i];
if (sequence && sequence === diff) {
results.push(i-1);
continue;
}
sequence = (diff === 1 || diff === -1) // or ... Math.abs(diff) === 1
? diff
: 0;
}
console.log(results);

想法很简单:我们不需要两次比较两个邻居。 ) 如果这个比较开始一个序列,就足以提高一种序列标志,如果没有序列则降低它。

关于Javascript - 如何检查3个数字是否连续并返回起点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10744537/

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