使用从索引开始的谓词查找

Ant*_*lvy 1 javascript arrays search lodash

什么是找到一个谓语匹配的数组项(不一定是指数,但作品)的最佳方式(所以我不能直接比较的项目,忘了indexOf),从开始的索引。

我想从数组中获取“下一个匹配”项,从当前位置开始。

以下是我目前的实现:

var currentIndex = 1;

var results = [
  {status: 'AWAITING_APPROVAL'}, // Not matched
  {status: 'APPROVED'},
  {status: 'APPROVED'},
  {status: 'APPROVED'},
  {status: 'AWAITING_APPROVAL'},
  {status: 'APPROVED'},
];

var nextIndex = results
  .slice(currentIndex)
  .findIndex(function (content) {
    return content.status === 'AWAITING_APPROVAL';
  });

if (nextIndex !== -1) {
  nextIndex += currentIndex;
  // Here we can use nextIndex which is 4
  console.log(nextIndex);
}
Run Code Online (Sandbox Code Playgroud)

当然,我可以做一个基本的 for 循环/ifs,但我想知道是否有更好的方法(也许使用 lodash)。

Nin*_*olz 5

您可以为更大的索引添加检查。

var currentIndex = 1,
    results = [{ status: 'AWAITING_APPROVAL'}, { status: 'APPROVED'}, { status: 'APPROVED'}, { status: 'APPROVED'}, { status: 'AWAITING_APPROVAL'}, { status: 'APPROVED'}],
    nextIndex = results.findIndex(({ status }, i) => i > currentIndex && status === 'AWAITING_APPROVAL');

console.log(nextIndex);
Run Code Online (Sandbox Code Playgroud)