javascript - 从索引开始查找谓词
问题描述
从索引开始找到与谓词匹配的数组项(不一定是索引,但有效)的最佳方法是什么(所以我不能直接比较这些项,忘记了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);
}
当然,我可以只做一个基本的 for 循环/ifs,但我想知道是否有更好的方法(也许使用 lodash)。
解决方案
您可以添加检查以获取更大的索引。
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);
推荐阅读
- amazon-web-services - 如何将 AWS CLI 的输出保存在变量中?
- sql - 如何获取客户数量?
- mysql - Spring Security:注册多个用户时出现 MySQL 重复条目错误
- webpack - bigcommerce 模具:尝试添加自定义 Javascript 模块 __WEBPACK_IMPORTED_MODULE_3__common_firebase__.a._log 不是函数
- java - 创建 .jks 文件以在 Eclipse 中存储密钥库
- javascript - 无法读取 if 语句中未定义的属性“替换”
- javascript - 获取调用函数的函数的返回值
- php - Laravel group 2 按键收集
- php - 如何在 YYYY-MM-DD HH: MM 中获取当前日期和时间?拉拉维尔 4
- c# - 尝试并行化 WebDriver 以进行测试时需要对象引用