Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用递归函数遍历JSON字符串到内部级别_Javascript_Arrays_Json_Object - Fatal编程技术网

Javascript 使用递归函数遍历JSON字符串到内部级别

Javascript 使用递归函数遍历JSON字符串到内部级别,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我有一个JSON输入,可以进入任意级别 我提供了一个输入样本 var d=getEntities({“类别”: { “方面”: [ { “计数”:1, “实体”:“公司”, “公司”: [ { “实体”:“福特汽车公司”, “福特汽车公司”: [ { “计数”:1, “实体”:“福特” } ] } ] }, { “计数”:4, “实体”:“国家”, “国家”:[ { “实体”:“德国”, “德国”:[ { “计数”:1, “实体”:“德国” } ], “货币”:“欧元(EUR)” }, { “实

我有一个JSON输入,可以进入任意级别

我提供了一个输入样本

var d=getEntities({“类别”:
{
“方面”:
[
{
“计数”:1,
“实体”:“公司”,
“公司”:
[
{
“实体”:“福特汽车公司”,
“福特汽车公司”:
[
{
“计数”:1,
“实体”:“福特”
}
]
}
]
},
{
“计数”:4,
“实体”:“国家”,
“国家”:[
{
“实体”:“德国”,
“德国”:[
{
“计数”:1,
“实体”:“德国”
}
],
“货币”:“欧元(EUR)”
},
{
“实体”:“意大利”,
“意大利”:[
{
“计数”:1,
“实体”:“意大利”
}
],
“货币”:“欧元(EUR)”
},
{
“实体”:“日本”,
“日本”:[
{
“计数”:1,
“实体”:“日本”
}
],
“货币”:“日元(日元)”
},
{
“实体”:“韩国”,
“韩国”:[
{
“计数”:1,
“实体”:“韩国”
}
],
“货币”:“韩元(韩元)”
}
]
},
{“计数”:5,
“实体”:“人”,
“人”:[
{
“计数”:2,
“实体”:“道奇”
},
{
“计数”:1,
“实体”:“道奇复仇者”
},
{
“计数”:1,
“实体”:“大联盟”
},
{
“计数”:1,
“实体”:“Sterling Heights”
}
]
}
]
}});
我想使用递归将所有级别的键值“Entity”添加到数组中

我能够使用字符串从第一级收集数据


var testJSON={“类别”:
{
“方面”:
[
{
“计数”:1,
“实体”:“公司”,
“公司”:
[
{
“实体”:“福特汽车公司”,
“福特汽车公司”:
[
{
“计数”:1,
“实体”:“福特”
}
]
}
]
},
{
“计数”:4,
“实体”:“国家”,
“国家”:[
{
“实体”:“德国”,
“德国”:[
{
“计数”:1,
“实体”:“德国”
}
],
“货币”:“欧元(EUR)”
},
{
“实体”:“意大利”,
“意大利”:[
{
“计数”:1,
“实体”:“意大利”
}
],
“货币”:“欧元(EUR)”
},
{
“实体”:“日本”,
“日本”:[
{
“计数”:1,
“实体”:“日本”
}
],
“货币”:“日元(日元)”
},
{
“实体”:“韩国”,
“韩国”:[
{
“计数”:1,
“实体”:“韩国”
}
],
“货币”:“韩元(韩元)”
}
]
},
{“计数”:5,
“实体”:“人”,
“人”:[
{
“计数”:2,
“实体”:“道奇”
},
{
“计数”:1,
“实体”:“道奇复仇者”
},
{
“计数”:1,
“实体”:“大联盟”
},
{
“计数”:1,
“实体”:“Sterling Heights”
}
]
}
]
}};
功能扫描(obj)
{
var-k;
if(对象hasOwnProperty(“实体”)){
用于(obj中的k){
if(对象hasOwnProperty(k)){
扫描(obj[k]);
}                
}
} 
否则{
if(k=='entity')
{
警报(对象实体);
}
}
};
扫描(testJSON);
怎么
(function recur( obj ) {
    Object.keys( obj ).forEach( function( prop ) {
        // Check if the property is an object
        if ( ({}).toString.apply( prop ) === '[object Object]' ) {
            // If it is, recall this function
            recur( prop );
        }
    } );
} () );
function scan(obj) {
    var k;
    if (obj instanceof Object) {
        for (k in obj){
            if (obj.hasOwnProperty(k)){
                //recursive call to scan property
                scan( obj[k] );  
            }                
        }
    } else {
        //obj is not an instance of Object so obj here is a value
    };

};
var aObject = {
    items: [],
    children: {}
}
var aObject = {
    items: [],
    children: {
        "subgroup1": {
            items: [],
            children: {}
        },
        "subgroup2": {
            items: [],
            children: {}
        }
    }
}
["subgroup1", "subgroup1a"]
aObject.children[array[0]].children[array[1]].items
function recursive(aLevel, aItem, aArray, aIndex){
    var lLevel = aLevel;

    // If we have reached the end of the array
    if (aIndex === aArray.length){
        // Insert
        aLevel.items.push(aItem);
    } else {

        // If the subgroup doesn't exist, create it
        if (typeof aLevel.children[aArray[aIndex]] === 'undefined'){
            aLevel.children[aArray[aIndex]] = {
              items: [],
              children: {}
            };
        }

        // Move into
        recursive(aLevel.children[aArray[aIndex]], aItem, aArray, aIndex+1);
    }
}

aObject = {
    items: [],
    children: {},
}

angular.forEach(items, function(item, i){
    var location = item.location;

    if (location.length == 0){
        aObject.items.push(item);
    } else {
        recursive(aObject, item, location, 0);
    }
});
var aObject = {
     items: [],
     children: {
        "subgroup1": {
            items: [],
            children: {
                "subgroup1a": {
                    items: [item],
                    children: {}
                }
            }
        },
        "subgroup2": {
            items: [],
            children: {}
        }
    }
}
var recursiveObjMap = (function(){
  var stack = [];
  var result = [];
  // var bail = false;
  return function map(data, key){
    if (!$.isArray(data) && !$.isPlainObject(data) ) { 
      result.push(data);
      return false 
    }

    $.each(data, function(i, v){
      if (key) stack.push(key);
      map(v, i);
      stack.pop();
    });
    return result;
  };
})();

recursiveObjMap({a:'b',c:{d:{e:"f"}}}) // ['b', 'f']
const obj = [
  {
    count: 1,
    entity: "Company",
    Company: [
      {
        entity: "Ford Motor Co",

        Ford_Motor_Co: [
          {
            count: 1,
            entity: "Ford",
          },
        ],
      },
    ],
  },
  {
    count: 4,
    entity: "Country",
    Country: [
      {
        entity: "Germany",
        Germany: [
          {
            count: 1,
            entity: "Germany",
          },
        ],
        currency: "Euro (EUR)",
      },
      {
        entity: "Italy",
        Italy: [
          {
            count: 1,
            entity: "Italy",
          },
        ],
        currency: "Euro (EUR)",
      },
      {
        entity: "Japan",
        Japan: [
          {
            count: 1,
            entity: "Japan",
          },
        ],
        currency: "Yen (JPY)",
      },
      {
        entity: "South Korea",
        South_Korea: [
          {
            count: 1,
            entity: "South Korea",
          },
        ],
        currency: "Won (KRW)",
      },
    ],
  },
  {
    count: 5,
    entity: "Persons",
    Persons: [
      {
        count: 2,
        entity: "Dodge",
      },
      {
        count: 1,
        entity: "Dodge Avenger",
      },
      {
        count: 1,
        entity: "Major League",
      },
      {
        count: 1,
        entity: "Sterling Heights",
      },
    ],
  },
];
function test(runObj) {
  for (let i in runObj) {
    typeof runObj[i] == "object" ? test(runObj[i]) : console.log(runObj[i]);
  }
}
test(obj);