Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.10.2012, 18:00
Кандидат Javascript-наук
Отправить личное сообщение для Suharik Посмотреть профиль Найти все сообщения от Suharik
 
Регистрация: 06.04.2010
Сообщений: 130

Логическая задачка с объектами
Всем привет. Сразу к делу..
Пытаюсь написать что-то типа поиск по объектам с параметрами.
Дано:
var obj = [
            {id:1,group:1,dat:5},
            {id:2,group:1,dat:4},
            {id:3,group:2,dat:2},
            {id:4,group:2,dat:6},
            {id:5,group:3,dat:4},
            {id:6,group:1,dat:5},
        ]

Хочу в этом объекте найти записи у которых у которых есть нужные мне значения.
Пример того как я хочу это видеть в виде запроса
foo({
       group:1,
       dat:5,
   });  //Должно вернуть записи с id 1 и 6

  foo({
       group:2,
   });  //Должно вернуть записи с id 3 и 4

  foo({
       id:5,
   });  //Должно вернуть записи с id 2 и 5

  foo({
       dat:4,
   });  //Должно вернуть записи с id 5


Вот, собственно вопрос, как должна выглядеть функция foo() ?
Зарание спасибо за помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 30.10.2012, 20:49
Кандидат Javascript-наук
Отправить личное сообщение для Suharik Посмотреть профиль Найти все сообщения от Suharik
 
Регистрация: 06.04.2010
Сообщений: 130

Спасибо за код и ссылку.
Возможно в скором будущем буду переходить на фрейм.
Ответить с цитированием
  #3 (permalink)  
Старый 30.10.2012, 21:31
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

еще вариант
Object.prototype.has = function( obj ) {
    return Object.keys( obj ).every( function( key ) {
        if ( this[ key ] === obj[ key ] ) return true;
    }, this );
};

var obj = [
    { id: 1, group: 1, dat: 5 },
    { id: 2, group: 1, dat: 4 },
    { id: 3, group: 2, dat: 2 },
    { id: 4, group: 2, dat: 6 },
    { id: 5, group: 3, dat: 4 },
    { id: 6, group: 1, dat: 5 },
];

// -----------------------------

alert( JSON.stringify( foo( obj, { group: 1, dat: 5 }) ));
alert( JSON.stringify( foo( obj, { group: 2 }) ));
alert( JSON.stringify( foo( obj, { id: 5 }) ));
alert( JSON.stringify( foo( obj, { dat: 4 }) ));

// -----------------------------

function foo( arr, criteria ) {
    return arr.filter( function( obj ) {
        if ( obj.has( criteria ) ) return true;
    });
}
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 30.10.2012 в 21:36.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Логическая проверка nastya Общие вопросы Javascript 3 23.10.2012 17:04
Небольшая задачка... (CSRF) nicklan Javascript под браузер 0 22.06.2012 11:53
Задачка с якорями vyrtime jQuery 15 07.10.2011 14:04
задачка по геометрии js lammeR Общие вопросы Javascript 16 02.02.2011 16:01
Небольшая задачка Maksim jQuery 4 30.09.2009 19:43