【问题标题】:How to filter a multidimentional JSON Object如何过滤多维 JSON 对象
【发布时间】:2017-12-06 02:59:42
【问题描述】:

我有一个 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 对象。

【问题讨论】:

  • 您可以缓存搜索结果。或者,可以通过一次传递数据来预缓存搜索结果以索引所有过滤器值和相关数组。但否则你做对了,没有任何技巧或隐藏的秘密。

标签: arrays json actionscript-3 actionscript


【解决方案1】:

如果我正确理解了您的问题,听起来您想使用.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'

这显然是一个基本示例,但相同的概念将适用于您问题中适用的精确属性。希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-22
    • 2022-01-08
    • 2021-03-23
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    相关资源
    最近更新 更多