Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.03.2014, 15:18
Аспирант
Отправить личное сообщение для Zhazhah Посмотреть профиль Найти все сообщения от Zhazhah
 
Регистрация: 27.11.2010
Сообщений: 48

Поиск в объекте
Добрый день, подскажите как искать в объекте и есть ли готовое более гибкое решение в 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;
        }
    }
}
Ответить с цитированием
  #2 (permalink)  
Старый 28.03.2014, 15:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ты неправильно это делаешь. Ключевое поле надо и использовать как ключ:
var collection = {1: {}, 2: {}, 3: {}};

function find(collection, thisArg) {
    return collection[this.Arg.id];
}
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 28.03.2014, 15:33
Аспирант
Отправить личное сообщение для Zhazhah Посмотреть профиль Найти все сообщения от Zhazhah
 
Регистрация: 27.11.2010
Сообщений: 48

Да знаю, api возвращает json в таком виде

[{id:1,location:'3'}, ...]


Может понадобиться искать по любому полю, а то и по двум сразу
Ответить с цитированием
  #4 (permalink)  
Старый 28.03.2014, 17:28
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Zhazhah
как искать в объекте
У тебя это не объект, а массив.

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')));
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 28.03.2014, 17:34
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

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})));
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 31.03.2014, 11:54
Аспирант
Отправить личное сообщение для Zhazhah Посмотреть профиль Найти все сообщения от Zhazhah
 
Регистрация: 27.11.2010
Сообщений: 48

Благодарю)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Живой поиск JQUERY + AJAX + PHP + MYSQL dimi007 AJAX и COMET 2 22.07.2014 13:50
select отключить встроенный поиск skynet-mfd jQuery 0 04.03.2013 11:26
Поиск в тексте javascript jQuery 3 31.05.2011 11:40
PagingToolbar и поиск DenQ ExtJS 5 02.11.2010 00:16
Поиск в массиве через JavaScript Noran Общие вопросы Javascript 0 10.08.2008 17:31