如何更好的验证多维数组中的内容

例如:[ {date: '', time: [ {start: '', end: ''}, ... ] }, ...] ;像这样的一个数组,我该如判断date, time.start, time.end 不为空,为空弹出窗口提示。我现在的做法是,用两个for循环遍历,但总感觉不够好,想问下可有更好解决方法?

for(var i = 0; i < length; i++){
    if(!arr[i].date){
        alert('');
        return false;
    }else{
        for(var j = 0; j < arr[i].time.length; j++){
            if(arr[i].time[j].start || arr[i].time[j].end) {
                alert('');
                return false;
            }
        }
    }
}
阅读 1.6k
2 个回答
function loop(arr){
      return arr.some(e=>(e.date==''||e.start==''||e.end=='')||(e.time&&loop(e.time)))
    }
console.log(loop(arr))

我现在这么写,不知道对不对,测试了好像没问题

flag1 = arr.some(el => {
    flag2 = el.time.some(val => {
        return val.start == '' || val.end == '';
    })
    return el.date == '' || flag2;
})

console.log('flag1: ', flag1);
推荐问题