2017-03-01 69 views
-1

我需要从一个复杂的JavaScript对象内提取字符串属性。在javascript中嵌套for循环

这里是我的情况:

for (var key in results) { 
    console.log(results[key]); 
     ...results[key] is an object that returns few arrays and properties 
      ...i need to capture an array inside named "all_names" 
       ...again loop through all the objects in the array "all_names" 
        ...all the objects have a property name called "first_name" 
         ...i need to capture the "first_name" that have the value "Paul" 

} 

样本数据:

后的console.log(结果[关键]);
“all_names”:数组[7]
地址: “一些地址”
org_number: “TV146”

然后通过 “all_names”
“first_name的” 循环 “保罗”
“姓氏”: “Henson”

捕获“Paul”

请帮忙。

+3

你可以张贴一些示例数据集和您所期望的准确输出? – nikhil

+0

是的加了....... –

+1

你只想返回一个字符串或一个字符串数组吗?你只是想要一个长长的“保罗”列表被退回吗?或者你想要返回Paul的额外数据? – Aron

回答

1

无论何时您拥有数组属性,您都可以像使用结果一样使用for (var x in arr)。如果没有一个示例对象,从你的描述去,您有:

results[].all_names[].first_name 

这给

for (var key in results) 
{ 
    //...results[key] is an object that returns few arrays and properties 
    //...I need to capture an array inside named "all_names" 
    //...loop through all the objects in the array "all_names" 
    for (var namekey in results[key].all_names) 
    { 
     // all the objects have a property name called "first_name" 
     // ...i need to capture the "first_name" that have the value "Paul" 
     if (results[key].all_names[namekey].first_name == 'Paul') { 
      // will always be "Paul" 
      console.log(results[key].all_names[namekey].first_name); 

      //perhaps: console.log(key); 
     } 
    } 
} 
+1

'for ... in'循环通过键不值!因为'results [key] .all_names'是一个数组,'name'将会是'“0”','“1”','“2”',... –

+0

@ibrahimmahrir感谢提醒。我已更新。 –

1
for (var key in results) { 
    results[key]["all_names"].forEach(function (obj) { 
     if (obj["first_name"] === "Paul") { 
      // this is Paul 
     } 
    }); 
} 
+0

或者只是'结果[键] .all_names'和'obj.first_name'! –