js在某个json节点后循环

问题描述:

我想在找到特定的json节点后循环浏览一些json节点。js在某个json节点后循环

所以,这里所进行的输入:

{ 
"search": { 
    "result": { 
     "DN": { 
      "$": "A,B,C" 
     }, 
     "attribute-value": [ 
      { 
       "@name": "name", 
       "$": "nameHere" 
      }, 
      { 
       "@name": "account", 
       "$": "accountNameHere" 
      }, 
      { 
       "@name": "role", 
       "$": "roleA" 
      }, 
      { 
       "@name": "role", 
       "$": "roleB" 
      } 
     ] 
    } 
}} 

正如你可以看到有在上面的JSON有效载荷的最后两个角色。 所以,我得到与以下逻辑@name =角色:

var attributeValue = node['search'].result['attribute-value']; 
for (var i = 0; i < attributeValue.length; i++) { 
    if (attributeValue[i]['@name'] === 'role') { 
     var vRole = attributeValue[i].$; 

     //The newJson.roles.role is to assign it to the new payload below 
     newJson.roles.role = vRole; 
    } 
} 

当我到达那里,我想拿起两个roleA和roleB并输出成以下newJson有效载荷:

var newJson = { 
    "newJson": { 
     "roles": [{ 
      "role": {} 
     }, { 
      "role": {} 
     }], 
    } 
} 

目标是能够获取所有INPUT角色节点并将其输出到newJson有效内容中,但是当我尝试在获取该@ name = role后发出for循环时,它将失败。

任何建议,非常感谢。 谢谢。

试试这个:

var attributeValue = node['search'].result['attribute-value']; 
var newJson = {roles:[]}; 
attributeValue.forEach(function(item){ 
    if(item["@name"]==="role"){ 
    newJson.roles.push({role:item["$"]}) 
    } 
}); 
console.log(JSON.stringify(newJson)); 

我想你应该在你的for循环的新对象追加到角色阵列,就像这样:

var attributeValue = node['search'].result['attribute-value']; 
for (var i = 0; i < attributeValue.length; i++) { 
    if (attributeValue[i]['@name'] === 'role') { 
     var vRole = attributeValue[i].$; 

     newJson.roles.push({ 
      role: vRole 
     }); 
    } 
} 

希望这可以帮助

您可以使用filtermap阵列的方法。

newJson.roles = attributeValue 
    .filter(function(x){return x['@name']==='role'}) 
    .map(function(x){return {'role': x['$']}}) 

谢谢大家 - 你真棒一切! 此制定了我:

JSBIN

var d = { 
"search": { 
    "result": { 
     "DN": { 
      "$": "A,B,C" 
     }, 
     "attribute-value": [ 
      { 
       "@name": "name", 
       "$": "nameHere" 
      }, 
      { 
       "@name": "account", 
       "$": "accountNameHere" 
      }, 
      { 
       "@name": "role", 
       "$": "roleA" 
      }, 
      { 
       "@name": "role", 
       "$": "roleB" 
      } 
     ] 
    } 
}}; 

var newJson = { 
    "newJson": { 
     "roles": [] 
    } 
}; 


var attributeValue = d.search.result['attribute-value']; 

for (var i = 0; i < attributeValue.length; i++) { 
    if (attributeValue[i]['@name'] === 'role') { 
     var vRole = attributeValue[i].$; 

     newJson.newJson.roles.push({"role": vRole}); 
    } 
} 

console.log(newJson); 

~~~~~~~~~~~~~~~~~~~~~最终结果~~~~~~~~ ~~~~~~

[object Object] { 
    newJson: [object Object] { 
    roles: [[object Object] { 
    role: "roleA" 
}, [object Object] { 
    role: "roleB" 
}] 
    } 
}