2011-05-28 52 views
0

對JavaScript對象應用查詢(例如正則表達式)以獲得某些數組或集合的子集遵循一些標準的最佳方式是什麼?有沒有這樣的jQuery插件,或者爲此目的使用jQuery或其他已知的js庫的某種方式?使用jQuery或其他已知的js庫查詢JavaScript對象

例如:

​​
+1

你是否在討論使用正則表達式作爲篩選器的篩選器?你可以擴展jQuery來創建一個基於正則表達式的過濾器。這裏是一個例子http://blog.mastykarz.nl/jquery-regex-filter/ – 2011-05-28 17:26:17

+0

是的,但是作爲對象的選擇而不是html元素。 – 2011-05-28 17:29:55

+1

我認爲你不應該對javascript的對象做這麼繁重的操作,可能你應該使用一些UI框架 – kobe 2011-05-28 17:49:48

回答

1

瀏覽器不)

2

它會顯示您正在尋找JSONpath等。

1

看來你可以通過JS本身做到這一點:

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

x你會過濾數組,其中每個元素滿足您的條件。

1

檢查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(); 
相關問題