javascript - 如何在javascript中for循环检查数组?

标签 javascript arrays

我有两个数组:

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 中不存在,则将 markedImage 的索引插入 invalidDoc.

第二个检查是:listOfObjects 的数据不能为空,如果为空则将 markedImage 的索引推送到 invalidDoc 中。

例如,

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

最佳答案

检查这个例子。我用了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);

关于javascript - 如何在javascript中for循环检查数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48655030/

相关文章:

javascript - 如何将 <br/> 插入 JavaScript 字符串

javascript - 如何知道 postman 中是否存在对象,如下所示:

JavaScript-HTML : Create ComboBox with non-selectable items

c++ - 如何定义自定义比较函数以根据一维数组排序对矩阵进行排序

c++ - 我在 C++ 数组初始化方面遇到了麻烦

python - Numpy Ctypes : Segmentation Fault. 通过指针传递数组

javascript - 如何使用javascript选择最里面的div元素

javascript - 如何通过按 React-Native 中的一个抽屉项目从抽屉导航移至上一个屏幕?

javascript - 为什么读取一个多于索引的数组不会抛出错误?

java - Java 填充二维数组中的特定行