2016-05-09 55 views
0

我需要使用jQuery grep.My JSON结果是这样的过滤JSON结果:过滤JSON对象与值数组使用jquery的grep

var data = { "items":[ 
    { 
     "Name":   "Name 1", 
     "City":  "city1" 
    }, 
    {   
     "Name":   "Name 2", 
     "City":  "city2" 
    }, 
    { 
     "Name":  "Name 3", 
     "City":  "cat1" 
    } 
]} 

过滤此JSON与名称示例的阵列:

var Name= ["Name 1","Name 2"]; 

回答

0
使用

jQuery.grep()过滤项阵列

var data = { 
 
    "items": [{ 
 
    "Name": "Name 1", 
 
    "City": "city1" 
 
    }, { 
 
    "Name": "Name 2", 
 
    "City": "city2" 
 
    }, { 
 
    "Name": "Name 3", 
 
    "City": "cat1" 
 
    }] 
 
} 
 
var name = ["Name 1", "Name 2"]; 
 

 
var res = $.grep(data.items, function(v) { 
 
    return name.indexOf(v.Name) > -1; 
 
}); 
 

 
document.write('<pre>' + JSON.stringify(res, 0, 3) + '</pre>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


或用filter()

var data = { 
 
    "items": [{ 
 
    "Name": "Name 1", 
 
    "City": "city1" 
 
    }, { 
 
    "Name": "Name 2", 
 
    "City": "city2" 
 
    }, { 
 
    "Name": "Name 3", 
 
    "City": "cat1" 
 
    }] 
 
} 
 
var name = ["Name 1", "Name 2"]; 
 

 
var res = data.items.filter(function(v) { 
 
    return name.indexOf(v.Name) > -1; 
 
}); 
 

 
document.write('<pre>' + JSON.stringify(res, 0, 3) + '</pre>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

0

我觉得是一样的questione这里暴露: [问题] Filtering a json array using jquery grep

然而,json数组就像字符串,或者你从中得到一个数组,或者你只能像字符串一样访问它。 使用jquery grep重新创建数组,然后通过索引访问它来比较值

0

如果您需要使用$ .grep从现有对象数组中获取字符串数组,请先使用$ .grep过滤对象,然后使用$ .map用于从下面的代码中得到结果对象的特定输出将帮助你。

过滤器使用对象$ .grep

var data = { 
    "items": [ 
    { 
     "Name": "Name 1", 
     "City": "city1" 
    }, 
    { 
     "Name": "Name 2", 
     "City": "city2" 
    }, 
    { 
     "Name": "Name 3", 
     "City": "cat1" 
    } 
    ] 
}; 

var objret = $.grep(data.items, function (n, i) { 
    return n.Name == 'Name 1' || n.Name == 'Name 2'; 
}); 

现在,你必须在objret可变结果对象现在的对象结果转换到你的字符串数组使用$ .MAP出来放像: -

获取输出

var array = $.map(objret, function (value, index) { 
    return [value.Name]; 
}); 

所以数组中有你所需的输出。