Логическая задачка с объектами
Всем привет. Сразу к делу..
Пытаюсь написать что-то типа поиск по объектам с параметрами. Дано: 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() ? Зарание спасибо за помощь. |
Спасибо за код и ссылку.
Возможно в скором будущем буду переходить на фрейм. |
еще вариант
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; }); } |
Часовой пояс GMT +3, время: 21:35. |