對JavaScript對象應用查詢(例如正則表達式)以獲得某些數組或集合的子集遵循一些標準的最佳方式是什麼?有沒有這樣的jQuery插件,或者爲此目的使用jQuery或其他已知的js庫的某種方式?使用jQuery或其他已知的js庫查詢JavaScript對象
例如:
對JavaScript對象應用查詢(例如正則表達式)以獲得某些數組或集合的子集遵循一些標準的最佳方式是什麼?有沒有這樣的jQuery插件,或者爲此目的使用jQuery或其他已知的js庫的某種方式?使用jQuery或其他已知的js庫查詢JavaScript對象
例如:
瀏覽器不)
它會顯示您正在尋找JSONpath等。
你應該使用像dojo這樣的框架來完成這些操作。
看看樣品電網
http://dojotoolkit.org/reference-guide/dojox/grid/DataGrid.html
你可以做所有類型上操作。
看來你可以通過JS本身做到這一點:
var re = ...; // regular espression
var y = [....]; // input array
var x = y.filter(function(el) { return re.test(el.firstName) });
在x
你會過濾數組,其中每個元素滿足您的條件。
檢查this鏈接。
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 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();
你是否在討論使用正則表達式作爲篩選器的篩選器?你可以擴展jQuery來創建一個基於正則表達式的過濾器。這裏是一個例子http://blog.mastykarz.nl/jquery-regex-filter/ – 2011-05-28 17:26:17
是的,但是作爲對象的選擇而不是html元素。 – 2011-05-28 17:29:55
我認爲你不應該對javascript的對象做這麼繁重的操作,可能你應該使用一些UI框架 – kobe 2011-05-28 17:49:48