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)。
您可以为更大的索引添加检查。
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)