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

使用jQuery或其他已知的js库查询javascript对象,javascript,jquery,html,json,Javascript,Jquery,Html,Json,在javascript对象上应用查询(如正则表达式)以获取符合某些条件的数组或集合的子集的最佳方法是什么?是否有用于jQuery的插件,或者使用jQuery或其他已知js库实现此目的的方法 例如: var x=[{ firstName: "Tony",lastName="Mike" }, { firstName: "John", lastName="Jan"}]; var y = ????;//the first n

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

例如:

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

它显示为您正在查找或类似的内容。

它显示为您正在查找或类似的内容。

您应该使用一些框架,如dojo来执行此类操作

查看示例网格


您可以在上面执行所有类型的操作。

您应该使用dojo之类的框架来执行这些类型的操作

查看示例网格


您可以对它执行各种操作。

似乎您可以通过JS自己来执行:

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

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

您似乎可以通过JS自己来完成:

var re = ...; // regular espression
var y = [....]; // input array
var x = y.filter(function(el) { return re.test(el.firstName) } );
x
中,您将拥有过滤数组,其中每个元素都满足您的条件。

检查链接。

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();
var jsonArray=[
{“user”:{“id”:100,“screen_name”:“d_linq”},“text”:“to objects”},
{“用户”:{“id”:130,“屏幕名称”:“c_bill”},“文本”:“g”},
{“user”:{“id”:155,“screen_name”:“b_mskk”},“text”:“kabushiki kaisha”},
{“用户”:{“id”:301,“屏幕名称”:“a_xbox”},“文本”:“光环到达”}
]
//[“b_mskk:kabushiki kaisha”、“c_bill:g”、“d_linq:to objects”]
var queryResult=Enumerable.From(jsonArray)
.Where(函数(x){return x.user.id<200})
.OrderBy(函数(x){return x.user.screen_name})
.Select(函数(x){return x.user.screen_name+':'+x.text})
.ToArray();
//捷径!字符串lambda选择器
var queryResult2=Enumerable.From(jsonArray)
.Where(“$.user.id<200”)
.OrderBy(“$.user.screen\u name”)
。选择(“$.user.screen_name+”:“++$.text”)
.ToArray();
检查链接。

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();
var jsonArray=[
{“user”:{“id”:100,“screen_name”:“d_linq”},“text”:“to objects”},
{“用户”:{“id”:130,“屏幕名称”:“c_bill”},“文本”:“g”},
{“user”:{“id”:155,“screen_name”:“b_mskk”},“text”:“kabushiki kaisha”},
{“用户”:{“id”:301,“屏幕名称”:“a_xbox”},“文本”:“光环到达”}
]
//[“b_mskk:kabushiki kaisha”、“c_bill:g”、“d_linq:to objects”]
var queryResult=Enumerable.From(jsonArray)
.Where(函数(x){return x.user.id<200})
.OrderBy(函数(x){return x.user.screen_name})
.Select(函数(x){return x.user.screen_name+':'+x.text})
.ToArray();
//捷径!字符串lambda选择器
var queryResult2=Enumerable.From(jsonArray)
.Where(“$.user.id<200”)
.OrderBy(“$.user.screen\u name”)
。选择(“$.user.screen_name+”:“++$.text”)
.ToArray();
使用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来执行此操作,因为您也可以在具有
Array.prototype.map
的浏览器中使用
x.map
(旧浏览器不需要)

使用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来执行此操作,因为您也可以在具有
Array.prototype.map
的浏览器中使用
x.map
(较旧的浏览器不需要)

您是说使用正则表达式作为选择器的文件管理器吗?您可以扩展jQuery以创建基于正则表达式的过滤器。下面是一个例子,是的,但作为对象的选择器,而不是html元素。我认为您不应该在javascript对象上执行如此繁重的操作,可能您应该使用一些UI框架。我不相信这在jQuery中是可能的。您必须考虑扩展Sizzle(),这是jQuery在幕后使用的选择器引擎。你能做的最好的事情就是像我前面提到的那样编写一个正则表达式过滤器,但显然这不是你想要的一个纯粹的正则表达式方法。我不确定还有哪些图书馆会这么做。我会让其他人回答这个问题。你是说使用正则表达式作为选择器的文件管理器吗?您可以扩展jQuery以创建基于正则表达式的过滤器。下面是一个例子,是的,但作为对象的选择器,而不是html元素。我认为您不应该在javascript对象上执行如此繁重的操作,可能您应该使用一些UI框架。我不相信这在jQuery中是可能的。您必须考虑扩展Sizzle(),这是jQuery在幕后使用的选择器引擎。你能做的最好的事情就是像我前面提到的那样编写一个正则表达式过滤器,但显然这不是你想要的一个纯粹的正则表达式方法。我不确定还有哪些图书馆会这么做。我会让别人回答的。