繁体   English   中英

如何在JavaScript中进行循环检查数组?

[英]How to for loop check array in javascript?

我有两个数组:

var listOfObjects = [{ "name": "A", "data": [{'value1':'1','value2':'2'}] },
                     { "name": "B", "data": [{'value1':'','value2':''}] }];
var markedImage = ["A","B","C"];

这是我的代码:

function checkData() {
        var invalidDoc = [];

        for (var i = 0; i < listOfObjects.length; i++) {
            for (var j = 0; j < markedImage.length; j++) {
                if (listOfObjects[i].name== markedImage[i]) {
                    for (var k = 0; k < listOfObjects[i].data.length; k++) {
                        if (listOfObjects[i].data[k] == "") {
                            var invalidfile = markedImage.indexOf(listOfObjects[i].name);
                            invalidDoc.push(invalidfile);
                            break;
                        } else {
                            var valid = markedImage.indexOf(listOfObjects[i].name);
                            validDoc.push(valid);
                        }

                    }

                } else {
                    var invalidfile = markedImage.indexOf(listOfObjects[i].name);
                    invalidDoc.push(invalidfile);
                }
            }
        }
    }

我想做的是检查两个数组。

首先检查的是:如果项目markedImage不存在listOfObjects ,推动指数markedImageinvalidDoc

第二个检查是:listOfObjects的数据不能为空,如果为空, markedImage invalidDoc的索引推入invalidDoc

例如,

invalidDoc预期结果为[1,2]。 因为在“B”的数据listOfObjects是空的,“C”不存在listOfObjects 1和2是markedImage中“ B”和“ C”的markedImage

检查此示例。 我在markedImage数组上使用了reduce函数,以查找markedImage中不存在的listOfObjects并检查data数组。

isDataEmpty是对每个data数组进行验证的函数。 您可以根据所需结果更改其逻辑。

 var listOfObjects = [{ "name": "A", "data": [{'value1':'1','value2':'2'}]}, //not empty { "name": "B", "data": [{'value1':'','value2':''}]}, //empty { "name": "D", "data": []}, //empty { "name": "E", "data": [{'value1':'1','value2':'2'}]}, //not empty { "name": "G"}, //empty { "name": "H", "data": [{'value1':'','value2':''}, {'value1':'1','value2':'2'}]}];//empty var markedImage = ["A","B","C", "D", "E", "F", "G", "H"]; function isDataEmpty(data) { // You can add any validation conditions here. // I assume that your data is an array and that by empty // data you mean that array may be empty, undefined, // or have some objects with empty 'value1' or 'value2' return !data || data.length === 0 || data.some(function(d){return d.value1 === "" || d.value2 === ""}); }; function find(array, name) { for (var i in array) { if (array[i].name === name) return array[i]; } return null; } var invalidDoc = markedImage.reduce(function(acc, cur, i) { var found = find(listOfObjects, cur); if (!found || isDataEmpty(found.data)) { acc.push(i); } return acc; },[]); console.log(invalidDoc); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM