简体   繁体   English

按条件在JSON中进行JavaScript搜索

[英]JavaScript search in JSON by condition

in json format string i have this structure and data: 以json格式的字符串,我具有以下结构和数据:

{
    "Template": [
        {
            "ID": "856",
            "name": "users",
            "Template_Id": 0
        },
        {
            "ID": "857",
            "name": "avatars",
            "Template_Id": 1
        },
        {
            "ID": "858",
            "name": "websites",
            "Template_Id": 2
        }
    ],
    "Fields": [
        {
            "Fields_Id": 0,
            "Template_Id": 0
        },
        {
            "Fields_Id": 1,
            "Template_Id": 1
        },
        {
            "Fields_Id": 2,
            "Template_Id": 2
        }
    ],
    "Field": [
        {
            "id": "1",
            "name": "name",
            "Fields_Id": 0
        },
        {
            "id": "2",
            "name": "lastname",
            "Fields_Id": 0
        },
        {
            "id": "3",
            "name": "Tel",
            "Fields_Id": 0
        },
        {
            "id": "4",
            "name": "Email",
            "Fields_Id": 0
        },
        {
            "id": "5",
            "name": "Site",
            "Fields_Id": 0
        },
        {
            "id": "6",
            "name": "Coname",
            "Fields_Id": 1
        },
        {
            "id": "7",
            "name": "MelliCode",
            "Fields_Id": 1
        },
        {
            "id": "8",
            "name": "Tel",
            "Fields_Id": 1
        },
        {
            "id": "9",
            "name": "Email",
            "Fields_Id": 1
        },
        {
            "id": "10",
            "name": "Site",
            "Fields_Id": 1
        },
        {
            "id": "11",
            "name": "Owner",
            "Fields_Id": 2
        },
        {
            "id": "12",
            "name": "address",
            "Fields_Id": 2
        },
        {
            "id": "13",
            "name": "Tel",
            "Fields_Id": 2
        },
        {
            "id": "14",
            "name": "Email",
            "Fields_Id": 2
        }
    ]
}

in this structure data i must be create key value array of Fields with condistion Fields.Fields_Id == Field.Fields_Id , simply that means : 在此结构数据中,我必须创建具有条件的Fields.Fields_Id == Field.Fields_IdFields键值数组,这简单地意味着:

Fields.Fields_Id[0] have 5 item as : Fields.Fields_Id[0] 5个项目为:

{
    "id": "1",
    "name": "name",
    "Fields_Id": 0
},
{
    "id": "2",
    "name": "lastname",
    "Fields_Id": 0
},
{
    "id": "3",
    "name": "Tel",
    "Fields_Id": 0
},
{
    "id": "4",
    "name": "Email",
    "Fields_Id": 0
},
{
    "id": "5",
    "name": "Site",
    "Fields_Id": 0
},

now i want to get all Fields chiled in Field , 现在我想将所有Fields放入Field

My Code is below code and that doesn't work correctly: 我的代码在代码下方,无法正常工作:

obj = JSON.parse(response.text);
fields_array = [];

var count_fields = obj.Fields.length;
obj.Fields.map(function (fields_item, i) {
    obj.Field.map(function (field_item, i) {
        if (field_item.Fields_Id == fields_item.Fields_Id)
            fields_array[fields_item.Fields_Id] = field_item.id + "|" + field_item.englishname + "|" + field_item.farsiname + "|" + field_item.Fields_Id;
    });
});

UPDATE: 更新:

obj.Fields.forEach(function (fitem) {
    obj.Field.forEach(function (ffitem) {
        if(fitem.Fields_Id == ffitem.Fields_Id)
            fields_array[fitem.Fields_Id] = ffitem.id + ":" + ffitem.name + ":" + ":" + ffitem.Fields_Id;
    });
});

If I understood you correctly, you could achieve expected result like this: 如果我对您的理解正确,则可以实现以下预期结果:

obj.Fields.forEach(function (fitem) {
    fields_array[fitem.Fields_Id] = [];
    obj.Field.forEach(function (ffitem) {
        if(fitem.Fields_Id == ffitem.Fields_Id)
            fields_array[fitem.Fields_Id].push(ffitem);                
    });
});
var jsonString = JSON.stringify(fields_array);

The result would be: 结果将是:

[
[
    {
        "id": "1",
        "name": "name",
        "Fields_Id": 0
    },
    {
        "id": "2",
        "name": "lastname",
        "Fields_Id": 0
    },
    {
        "id": "3",
        "name": "Tel",
        "Fields_Id": 0
    },
    {
        "id": "4",
        "name": "Email",
        "Fields_Id": 0
    },
    {
        "id": "5",
        "name": "Site",
        "Fields_Id": 0
    }
],
[
    {
        "id": "6",
        "name": "Coname",
        "Fields_Id": 1
    },
    {
        "id": "7",
        "name": "MelliCode",
        "Fields_Id": 1
    },
    {
        "id": "8",
        "name": "Tel",
        "Fields_Id": 1
    },
    {
        "id": "9",
        "name": "Email",
        "Fields_Id": 1
    },
    {
        "id": "10",
        "name": "Site",
        "Fields_Id": 1
    }
],
[
    {
        "id": "11",
        "name": "Owner",
        "Fields_Id": 2
    },
    {
        "id": "12",
        "name": "address",
        "Fields_Id": 2
    },
    {
        "id": "13",
        "name": "Tel",
        "Fields_Id": 2
    },
    {
        "id": "14",
        "name": "Email",
        "Fields_Id": 2
    }
]

] ]

Here is fiddle: http://jsfiddle.net/z11etdvL/2/ 这是小提琴: http : //jsfiddle.net/z11etdvL/2/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM