Поиск в объекте
Добрый день, подскажите как искать в объекте и есть ли готовое более гибкое решение в JQuery ?
Пример, без учета вложенности: find([{id: 1}, {id: 2}, {id: 3}], {id: 2}); function find(collection, thisArg) { var index = -1, length = collection.length; while (++index < length) { var value = collection[index]; if(value.ID == thisArg.ID) { return value; } } } |
Ты неправильно это делаешь. Ключевое поле надо и использовать как ключ:
var collection = {1: {}, 2: {}, 3: {}}; function find(collection, thisArg) { return collection[this.Arg.id]; } |
Да знаю, api возвращает json в таком виде
[{id:1,location:'3'}, ...] Может понадобиться искать по любому полю, а то и по двум сразу |
Цитата:
function Collection(items) { this.items = items; } Collection.prototype.query = function(key, value) { return this.items.filter(function(item) { return item[key] == value; }); }; var collection = new Collection([{id:1,location:'3'}, {id: 2, location: '3'}]); alert(JSON.stringify(collection.query('id', '2'))); alert(JSON.stringify(collection.query('location', '3'))); |
function Collection(items) { this.items = items; } Collection.prototype.query = function(whereClause) { return this.items.filter(function(item) { for (var key in whereClause) { if (item[key] != whereClause[key]) return false; } return true; }); }; var collection = new Collection([{id:1,location:'3'}, {id: 2, location: '3'}]); alert(JSON.stringify(collection.query({id: 2}))); alert(JSON.stringify(collection.query({location: 3, id: 1}))); |
Благодарю)
|
Часовой пояс GMT +3, время: 09:15. |