2014-08-29 48 views
-2
[ 
    { 
     "item": "1", 
     "values": [{"name": "A"}] 
    }, 
    { 
     "item": "2", 
     "values": [{"name": "B"}] 
    }, 
    { 
     "item": "3", 
     "values": [{"name": "A"}] 
    } 
] 

和所期望的结果是一组状阵列:["A", "B"]从名称字段如何创建从JSON的东西“深”使用Javascript

什么的了“的Javascript实践”抓起?谢谢。

+1

你有什么试过?基本的for循环会遍历对象,以便您可以获取所需的值。究竟是什么问题? – scrappedcola 2014-08-29 18:32:07

+0

[访问/进程(嵌套)对象,数组或JSON]的可能的重复(http://stackoverflow.com/questions/11922383/access-process-nested-objects-arrays-or-json) – 2014-08-29 18:33:27

+0

嘿,如果你认为这很深...只是你等待brah。 – 2014-08-29 18:34:05

回答

0

首先,您的嵌套数组定义中有语法错误。

"values": ["name": "A"] // this is not valid javascript 

...我猜你想要更像这样的东西?

x=[ 
    { 
     "item": "1", 
     "values": {"name": "A"} 
    }, 
    { 
     "item": "2", 
     "values": {"name": "B"} 
    }, 
    { 
     "item": "3", 
     "values": {"name": "A"} 
    } 
] 

其次,你真正的问题 - 我会使用下划线JS或Lodash库来帮助。特别是他们的地图功能。因此,假设您使用的是我为x定义的对象,并使用下划线JS ...

.map(x, function(y){return y.values.name}) 
["A", "B", "A"] 

希望有所帮助。

+1

是不是“A”在这里重复? – NSF 2014-08-29 19:14:35

+0

是的,因为“A”有两个value.name属性。如果你想过滤它们并且只有唯一的值,那么还有另一个underscore.js函数(巧合的是_.uniq()) – 2014-08-30 01:43:53