我有一个包含许多json对象的Json字符串,每个json都有一个键,我使用JSON.parse将字符串放入一个对象。
然后我按以下格式提取我需要的内容
json['product1'][0].name
但是,我想根据另一个元素的值从每个json对象中获取一个元素数组。目前我正在使用:
for each (var row:Object in json) {
if (row[0][filterElement] == filterValue) {
arr.push(row[0][element]);
}
}
这是一个好方法吗?我问,因为我似乎每次都要浏览整个json对象。
答案 0 :(得分:0)
如果我已正确理解您的问题,您可能会想要使用.map
和.filter
。
所以如果我们有一个像......这样的对象。
var obj = {
people: [
{name: 'person1'},
{name: 'person2'},
{name: 'person3'},
{name: 'person4'},
]
};
然后,您可以使用.map
创建一个新的名称数组...
var names = obj.people.map(function(person){
return person.name;
}); // ['person1', 'person2', 'person3', 'person4']
在这个数组上,您可以使用.filter
...
var filter = 'person2';
var filteredNames = obj.people.map(function(person){
return person.name;
}).filter(function(name){
return name == filter; // if true, will push name into a name into our new array
}); // 'person2'
这显然是一个基本的例子,但相同的概念将适用于您的问题中适用的精确属性。希望这会有所帮助。