我正在使用recusion解析json。我调用我的函数本身。我的json“array”和“list”中有两个数组。我需要获取“label”的属性并保存在array中。我需要保存值标签内部的“list”和“label”的单独数组。我正在尝试这样做但我触及了我的概念。我需要保存在数组中,如果它属性来自“数组”(json)我需要添加不同的数组如果属性来自“list”.Property是label。
var arrayLabel=new Array();
var listLabel=new Array();
function recursiveIteration(object, callback) {
for (var property in object) {
if (object.hasOwnProperty(property)) {
if (typeof object[property] == "object"){
recursiveIteration(object[property], callback);
}else{
//found a property which is not an object, check for your conditions here
callback(object, property);
}
}
}
}
function test_cb(object, property){
if(property == "label" && object[property]&& object instanceof Array))
{
arrayLabel.push(object[property])
}
}
答案 0 :(得分:0)
我确实设法使用你的函数来检索标签,但我不明白listLabel数组的样子。
DEMO 已更新
var json = {...};
function test_cb(object, property, data) {
var array = [];
if(data.filter(object, property) && object[property]){
data.array.push(object[property]);
}
}
recursiveIteration(json, test_cb, {
array: arrayLabel,
filter: function(object, property){
return (property == 'label' && !object.array);
}
});
recursiveIteration(json, test_cb, {
array: listLabel,
filter: function(object, property){
console.dir(object);
return (property == 'label' && !!object.list);
}
});
console.log('arrayLabel',arrayLabel);
console.log('listLabel',arrayLabel);
document.body.textContent = 'arrayLabel: ' + arrayLabel.join(', ') +
' - listLabel: ' + listLabel.join(', ');