使用jQuery或其他已知的js库查询javascript对象

时间:2011-05-28 17:21:11

标签: javascript jquery html json

在javascript对象上应用查询(例如正则表达式)以获取某些符合某些条件的数组或集合的子集的最佳方法是什么,jQuery是否有这样的插件,或者某种方式使用jQuery或其他已知的用于此目的的js库?

例如:

var x=[{ firstName: "Sakher",lastName="Sawan" }, { firstName: "John", lastName="Jan"}];
var y = ????;//the first names of the objects in x where their last names follow the regular expression : pla-pla-pla

5 个答案:

答案 0 :(得分:2)

看起来你正在寻找JSONpath之类的东西。

答案 1 :(得分:1)

你应该使用像dojo这样的一些框架来进行这些操作。

查看示例网格

http://dojotoolkit.org/reference-guide/dojox/grid/DataGrid.html

你可以对此进行各种操作。

答案 2 :(得分:1)

似乎你可以通过JS本身来做到这一点:

var re = ...; // regular espression
var y = [....]; // input array
var x = y.filter(function(el) { return re.test(el.firstName) } );

x中,您将拥有过滤数组,其中每个元素都满足您的条件。

答案 3 :(得分:1)

检查this链接。

var jsonArray = [
    { "user": { "id": 100, "screen_name": "d_linq" }, "text": "to objects" },
    { "user": { "id": 130, "screen_name": "c_bill" }, "text": "g" },
    { "user": { "id": 155, "screen_name": "b_mskk" }, "text": "kabushiki kaisha" },
    { "user": { "id": 301, "screen_name": "a_xbox" }, "text": "halo reach" }
]
// ["b_mskk:kabushiki kaisha", "c_bill:g", "d_linq:to objects"]
var queryResult = Enumerable.From(jsonArray)
    .Where(function (x) { return x.user.id < 200 })
    .OrderBy(function (x) { return x.user.screen_name })
    .Select(function (x) { return x.user.screen_name + ':' + x.text })
    .ToArray();
// shortcut! string lambda selector
var queryResult2 = Enumerable.From(jsonArray)
    .Where("$.user.id < 200")
    .OrderBy("$.user.screen_name")
    .Select("$.user.screen_name + ':' + $.text")
    .ToArray();

答案 4 :(得分:1)

使用jQuery:

var x = [
    { firstName: "Sakher",lastName:"Sawan" },
    { firstName: "John", lastName:"Jan"}
],
    y = $(x).map(function(a, obj){
        return /^S/.test(obj.lastName) ? obj.firstName : null
    });

请注意,在某些浏览器中,您不必使用jQuery来执行此操作,因为您也可以在x.map(旧浏览器不支持)的浏览器中使用Array.prototype.map