首页 > 解决方案 > 查找下一个数组索引不是从头开始 AND 如果没有找到则从头开始循环

问题描述

const arr = [{item:'a', value:false}, {item:'b', value:true}, {item:'c', value:true}, {item:'d', value:false}];
const startIndex = 2;

给定 startIndex 在数组中找到 value=true 的下一个对象。迭代必须向前,如果没有找到,从索引 0 开始。应该返回 arr[1];

我刚刚碰壁,似乎找不到迭代方法:/

let result = {};
for (let i = startIndex + 1; i < arr.length; i++) {
    if (!arr[i] && i < arr.length) {
        result = arr[i];
    }
}
console.log(result);

标签: javascriptarrays

解决方案


我不确定我是否理解。但...

getNext = function(startIndex, arr){
    var i;
    for(i = startIndex; i < arr.length; i++){
        if(arr[i].value){
            return arr[i];
        }
    }

    if(startIndex != 0){
        return getNext(0, arr);
    }
    return null;
}

推荐阅读