如何过滤Json对象?

时间:2015-05-25 06:47:38

标签: javascript jquery json

Json Obj:

"[{ID:1, Region:"India", ParentRegion:"All"}, {ID:2, Region:"Maharashtra", ParentRegion:"India"}, {ID:3, Region:"Delhi & NCR", ParentRegion:"India"}, {ID:4, Region:"Andra Pradesh", ParentRegion:"India"}, {ID:5, Region:"Arunachal Pradesh", ParentRegion:"India"}, {ID:6, Region:"Assam", ParentRegion:"India"}, {ID:7, Region:"Bihar", ParentRegion:"India"}, {ID:8, Region:"Chhattisgarh", ParentRegion:"India"}, {ID:9, Region:"Goa", ParentRegion:"India"}, {ID:10, Region:"Gujarat", ParentRegion:"India"}, {ID:11, Region:"Haryana", ParentRegion:"India"}, {ID:12, Region:"Himachal Pradesh", ParentRegion:"India"}, {ID:13, Region:"Jammu and Kashmir", ParentRegion:"India"}, {ID:14, Region:"Jharkhand", ParentRegion:"India"}, {ID:15, Region:"Karnataka", ParentRegion:"India"}, {ID:16, Region:"Kerala", ParentRegion:"India"}, {ID:17, Region:"Madya Pradesh", ParentRegion:"India"}, {ID:18, Region:"Manipur", ParentRegion:"India"}, {ID:19, Region:"Meghalaya", ParentRegion:"India"}, {ID:20, Region:"Mizoram", ParentRegion:"India"}, {ID:21, Region:"Nagaland", ParentRegion:"India"}, {ID:22, Region:"Orissa", ParentRegion:"India"}, {ID:23, Region:"Punjab", ParentRegion:"India"}, {ID:24, Region:"Rajasthan", ParentRegion:"India"}, {ID:25, Region:"Sikkim", ParentRegion:"India"}, {ID:26, Region:"Tamil Nadu", ParentRegion:"India"}, {ID:27, Region:"Tripura", ParentRegion:"India"}, {ID:28, Region:"Uttaranchal", ParentRegion:"India"}, {ID:29, Region:"Uttar Pradesh", ParentRegion:"India"}, {ID:30, Region:"West Bengal", ParentRegion:"India"}, {ID:31, Region:"Andaman and Nicobar Islands", ParentRegion:"India"}, {ID:32, Region:"Chandigarh", ParentRegion:"India"}, {ID:33, Region:"Dadra and Nagar Haveli", ParentRegion:"India"}, {ID:34, Region:"Daman and Diu", ParentRegion:"India"}, {ID:35, Region:"Lakshadeep", ParentRegion:"India"}, {ID:36, Region:"Pondicherry", ParentRegion:"India"}, {ID:37, Region:"Corporate office & Registered office", ParentRegion:"Maharashtra"}, {ID:38, Region:"Consists of regions in Maharashtra other than Mumbai", ParentRegion:"Maharashtra"}]"

我试图在var ObjSubset= where Obj.ParentRegion="Maharashtra"

条件下对此进行过滤

这就是我的尝试:

var arr = jQuery.grep(Obj, function(index, value) {
    return (value.ParentRegion == $('#drpcity').val()); // value of drpcity is Maharashtra
});

但它似乎是整个Obj而不是Obj的子集

3 个答案:

答案 0 :(得分:5)

您的函数参数错误

  

功能   类型:Function(Object elementOfArray,Integer indexInArray)=>布尔   处理每个项目的功能。函数的第一个参数是item,第二个参数是索引。该函数应返回一个布尔值。这将是全局窗口对象。Detail

var Obj = [{ ID: 1, Region: "India", ParentRegion: "All" }, { ID: 2, Region: "Maharashtra", ParentRegion: "India" }, { ID: 3, Region: "Delhi & NCR", ParentRegion: "India" }, { ID: 4, Region: "Andra Pradesh", ParentRegion: "India" }, { ID: 5, Region: "Arunachal Pradesh", ParentRegion: "India" }, { ID: 6, Region: "Assam", ParentRegion: "India" }, { ID: 7, Region: "Bihar", ParentRegion: "India" }, { ID: 8, Region: "Chhattisgarh", ParentRegion: "India" }, { ID: 9, Region: "Goa", ParentRegion: "India" }, { ID: 10, Region: "Gujarat", ParentRegion: "India" }, { ID: 11, Region: "Haryana", ParentRegion: "India" }, { ID: 12, Region: "Himachal Pradesh", ParentRegion: "India" }, { ID: 13, Region: "Jammu and Kashmir", ParentRegion: "India" }, { ID: 14, Region: "Jharkhand", ParentRegion: "India" }, { ID: 15, Region: "Karnataka", ParentRegion: "India" }, { ID: 16, Region: "Kerala", ParentRegion: "India" }, { ID: 17, Region: "Madya Pradesh", ParentRegion: "India" }, { ID: 18, Region: "Manipur", ParentRegion: "India" }, { ID: 19, Region: "Meghalaya", ParentRegion: "India" }, { ID: 20, Region: "Mizoram", ParentRegion: "India" }, { ID: 21, Region: "Nagaland", ParentRegion: "India" }, { ID: 22, Region: "Orissa", ParentRegion: "India" }, { ID: 23, Region: "Punjab", ParentRegion: "India" }, { ID: 24, Region: "Rajasthan", ParentRegion: "India" }, { ID: 25, Region: "Sikkim", ParentRegion: "India" }, { ID: 26, Region: "Tamil Nadu", ParentRegion: "India" }, { ID: 27, Region: "Tripura", ParentRegion: "India" }, { ID: 28, Region: "Uttaranchal", ParentRegion: "India" }, { ID: 29, Region: "Uttar Pradesh", ParentRegion: "India" }, { ID: 30, Region: "West Bengal", ParentRegion: "India" }, { ID: 31, Region: "Andaman and Nicobar Islands", ParentRegion: "India" }, { ID: 32, Region: "Chandigarh", ParentRegion: "India" }, { ID: 33, Region: "Dadra and Nagar Haveli", ParentRegion: "India" }, { ID: 34, Region: "Daman and Diu", ParentRegion: "India" }, { ID: 35, Region: "Lakshadeep", ParentRegion: "India" }, { ID: 36, Region: "Pondicherry", ParentRegion: "India" }, { ID: 37, Region: "Corporate office & Registered office", ParentRegion: "Maharashtra" }, { ID: 38, Region: "Consists of regions in Maharashtra other than Mumbai", ParentRegion: "Maharashtra" }];

var arr = jQuery.grep(Obj, function (Obj, index) {
    return (Obj.ParentRegion == $('#drpcity').val());// value of drpcity is Maharashtra
});
console.log(arr);  

DEMO

答案 1 :(得分:1)

您的对象是字符串但不是JSON,因此您可以使用Function对象首先解析它:

var input = '[{ID:1, Region:"India", ParentRegion:"All"}, {ID:2, Region:"Maharashtra", ParentRegion:"India"}, {ID:3, Region:"Delhi & NCR", ParentRegion:"India"}, {ID:4, Region:"Andra Pradesh", ParentRegion:"India"}, {ID:5, Region:"Arunachal Pradesh", ParentRegion:"India"}, {ID:6, Region:"Assam", ParentRegion:"India"}, {ID:7, Region:"Bihar", ParentRegion:"India"}, {ID:8, Region:"Chhattisgarh", ParentRegion:"India"}, {ID:9, Region:"Goa", ParentRegion:"India"}, {ID:10, Region:"Gujarat", ParentRegion:"India"}, {ID:11, Region:"Haryana", ParentRegion:"India"}, {ID:12, Region:"Himachal Pradesh", ParentRegion:"India"}, {ID:13, Region:"Jammu and Kashmir", ParentRegion:"India"}, {ID:14, Region:"Jharkhand", ParentRegion:"India"}, {ID:15, Region:"Karnataka", ParentRegion:"India"}, {ID:16, Region:"Kerala", ParentRegion:"India"}, {ID:17, Region:"Madya Pradesh", ParentRegion:"India"}, {ID:18, Region:"Manipur", ParentRegion:"India"}, {ID:19, Region:"Meghalaya", ParentRegion:"India"}, {ID:20, Region:"Mizoram", ParentRegion:"India"}, {ID:21, Region:"Nagaland", ParentRegion:"India"}, {ID:22, Region:"Orissa", ParentRegion:"India"}, {ID:23, Region:"Punjab", ParentRegion:"India"}, {ID:24, Region:"Rajasthan", ParentRegion:"India"}, {ID:25, Region:"Sikkim", ParentRegion:"India"}, {ID:26, Region:"Tamil Nadu", ParentRegion:"India"}, {ID:27, Region:"Tripura", ParentRegion:"India"}, {ID:28, Region:"Uttaranchal", ParentRegion:"India"}, {ID:29, Region:"Uttar Pradesh", ParentRegion:"India"}, {ID:30, Region:"West Bengal", ParentRegion:"India"}, {ID:31, Region:"Andaman and Nicobar Islands", ParentRegion:"India"}, {ID:32, Region:"Chandigarh", ParentRegion:"India"}, {ID:33, Region:"Dadra and Nagar Haveli", ParentRegion:"India"}, {ID:34, Region:"Daman and Diu", ParentRegion:"India"}, {ID:35, Region:"Lakshadeep", ParentRegion:"India"}, {ID:36, Region:"Pondicherry", ParentRegion:"India"}, {ID:37, Region:"Corporate office & Registered office", ParentRegion:"Maharashtra"}, {ID:38, Region:"Consists of regions in Maharashtra other than Mumbai", ParentRegion:"Maharashtra"}]';

var array = new Function('', 'return ' + input + ';')();

答案 2 :(得分:0)

使用js数组过滤器:

将字符串解析为json:

var Obj =JSON.parse(Obj);

var ObjSubset = Obj.filter(function(item){
    return item.ParentRegion == $('#drpcity').val()
})