我试图找到数组中形成递增值链的所有值 - 所有值都引用回某个起始值。增量可以“向上”也可以“向下”。
array = [10, 2, 3, 5, 9, 11]
以数字 2
开头应返回:
[2, 3]
以数字 10
开头应返回:
[9, 10, 11]
当然有很多低效的方法可以做到这一点,但我在这里问这个是因为有效地做到这一点对我的情况很重要,而且我是一个 JS 新手。
最佳答案
您可以使用Array.prototype.includes()
来检查数组中是否存在数字。如果数字位于基本引用之前,请使用 unshift
添加它,如果在之后使用 push
添加它:
var array = [10, 2, 3, 5, 9, 11];
function findChain(array, num) {
if(!array.includes(num)) {
return [];
}
const result = [num];
let before = num - 1;
let after = num + 1;
while(array.includes(before)) {
result.unshift(before--);
}
while(array.includes(after)) {
result.push(after++);
}
return result;
}
console.log('Ref 2 -', findChain(array, 2));
console.log('Ref 5 -', findChain(array, 5));
console.log('Ref 10 -', findChain(array, 10));
console.log('Ref 20 -', findChain(array, 20));
关于javascript - 查找数组中链式递增的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39930601/