Запрос объектов javascript с использованием jQuery или другой известной библиотеки js - PullRequest
0 голосов
/ 28 мая 2011

Каков наилучший способ применить запросы (например, регулярные выражения) к объектам 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 ]

2 голосов
/ 28 мая 2011

Похоже, что вы ищете JSONpath или тому подобное.

1 голос
/ 28 мая 2011

с использованием 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 (старые браузеры этого не делают)

1 голос
/ 28 мая 2011

Проверьте эту ссылку.

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();
1 голос
/ 28 мая 2011

Кажется, что вы можете сделать это самим JS:

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

В x у вас будет фильтрованный массив, где каждый элемент удовлетворяет вашим условиям.

1 голос
/ 28 мая 2011

Вы должны использовать некоторые фреймворки, такие как dojo, для выполнения таких операций.

посмотрите на пример сетки

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

вы можете выполнять все виды операцийна этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...