Javascript 循环遍历JSON对象并检查特定对象是否存在

Javascript 循环遍历JSON对象并检查特定对象是否存在,javascript,jquery,json,Javascript,Jquery,Json,我有一个JSON对象: [{"box":1,"parent":[],"child":[{"boxId":2}]},{"box":2,"parent":[{"boxId":1}],"child":[]}] 我有一个要求,我想检查我的JSON对象是否有特定的框;如果是,则检查它是否有特定的子项 eg:检查框1是否存在 如果是,那么 检查它是否有子对象 如果是,那么 检查它是否有子boxId=2 在javascript/jquery中如何做到这一点 我就是这样尝试的: var Dependan

我有一个JSON对象:

[{"box":1,"parent":[],"child":[{"boxId":2}]},{"box":2,"parent":[{"boxId":1}],"child":[]}]
我有一个要求,我想检查我的JSON对象是否有特定的框;如果是,则检查它是否有特定的子项

eg:检查框1是否存在
如果是,那么
检查它是否有子对象
如果是,那么

检查它是否有子boxId=2

在javascript/jquery中如何做到这一点

我就是这样尝试的:

   var DependantArr=myJSON;
   var $hasDependancy;
   DependantArr.map(function (boxes) {
    if (boxes.box == 2) {
        if (boxes.child.length != 0) {
           boxes.child.map(function (child) {
           $hasDependancy = true;
           return false;
         });
     }
   }
这似乎不起作用,因为即使我返回false,它仍然会继续循环。如果我找到匹配的,我想打破循环


有什么建议吗?

我想这些会有帮助的

  for(var i=DependantArr.length;i>=0;i--) {
                     return DependantArr[i].box == 1 &&  DependantArr[i].child.length!=0 &&
     DependantArr[i].child[0].boxId==2;

            }

如果这是您需要检查的唯一情况,您可以使用:

var DependantArr = [{"box": 1, "parent": [], "child": [{"boxId": 3}]}, {"box": 2, "parent": [{"boxId": 1}], "child": []}];
var $hasDependancy = DependantArr.some(function(thisBox) {
    if ((thisBox.box === 1) && (thisBox.hasOwnProperty('child'))) {
        return thisBox.child.filter(function(thisChild) {
            return thisChild.boxId === 2;
        }).length > 0;
    }
});
试试这个

data.forEach(function (el) {
 Object.keys(el).forEach(function (property) {
  if (el[property] === 'your  value to check') {
      // do whatever you need here
    }
  });
});

您需要迭代所有数组,您需要

var数组=[{“box”:1,“父”:[],“子”:[{“boxId”:2}],{“box”:2,“父”:[{“boxId”:1}],“子”:[]}];
函数检查(){
var=false;
array.some(函数(a){
如果(a.box==1){
Array.isArray(a.child)和&a.child.some(函数b){
如果(b.boxId==2){
发现=真;
返回true;
}
});
返回true;
}
});
发现退货;
}

document.write(check())
创建一个函数,该函数将调用数组上的
过滤器并返回它。返回的值将是一个数组,其中包含找到的与您的条件匹配的对象

演示片段: (检查控制台)

var json=[{“box”:1,“parent”:[],“child”:[{“boxId”:2}],{“box”:2,“parent”:[{“boxId”:1}],“child”:[]}];
函数搜索(id,childId){
返回json.filter(函数(obj){
如果((obj.box==id)&&&(obj.child)&&(obj.child.length>0)){
返回对象子过滤器(函数(子){
返回(child.boxId==childId);
});
}
});
}
console.log(搜索('1','2')[0]);

console.log(搜索('2','2')[0])您可以使用递归。递归调用同一个函数,以检查所需的元素是否真的存在于数组中。
var json=[{“box”:1,“parent”:[],“child”:[{“boxId”:2}],{“box”:2,“parent”:[{“boxId”:1}],“child”:[]}];
var=false;
函数validateJson(数据、框、boxId){
用于(输入数据){
if((数据[key].constructor==Object | |数据[key].constructor==Array)&&(key!==box&&data[key]!==1 | | key!==boxId&&data[key]!==2)){

arguments.callee(data[key]);//使用普通for循环,则不能中断/返回使用
.map()
。因为
返回的是当前回调,而不是整个操作。“检查它是否有子boxId=2”谢谢@Ziki。我完全错过了这一部分。已更新。请检查它是否有子boxId=2,您的代码中有很多错误,如:
dependentarr[I].box.length