Поиск в объекте
Добрый день, подскажите как искать в объекте и есть ли готовое более гибкое решение в 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, время: 18:50. |