[英]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
,推动指数markedImage
到invalidDoc
。
第二个检查是: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.