javascript - 查找数组中链式递增的值

标签 javascript ecmascript-6 lodash

我试图找到数组中形成递增值链的所有值 - 所有值都引用回某个起始值。增量可以“向上”也可以“向下”。

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/

相关文章:

JavaScript ES6 : Recursive function call from foreach loop fails

javascript - 如何创建自定义元素的扩展类的新实例

JavaScript:如何将具有嵌套属性的对象数组分组?

javascript - Chrome 中的 onclick

javascript - 如何仅在 jquery 数据表中删除子行?

javascript - 在每个页面上将 <Link> 与 React Router 一起使用时,Props 始终未定义

javascript - React Dragula 给出 "Failed to compile"和 "unexpected"错误

javascript - 在React es6中实现去抖

javascript - 使用 lodash 在对象数组中展平数组

Javascript 单选按钮功能错误