[英]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_Id
的Fields
键值数组,这简单地意味着:
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.