@alkhadidzhaevich

Как сделать поиск в массиве по нескольким ключам на javascript?

Всем привет!
Есть массив объектов с тремя свойствами — координаты x, y и цвет.
Всего в массиве может быть 100-300 значений
Примерно такой:
var array = [
{x:1, y:1, color: 'aaa'},
{x:2, y:2, color: 'bbb'},
{x:1, y:3, color: 'aaa'},
{x:2, y:4, color: 'bbb'}
];

Я хочу реализовать возможность поиска в массиве по паре координат или по цвету. При этом необходима возможность изменять любое значение объекта после того, как он нашелся.
Можно сказать, что мне нужно сделать простенький sql на javascript, при этом нужно чтобы все работало быстро(в реальном времени).

т.е. как-то так:
var obj = getByCoords(1, 3);
obj.color = 'ccc';
или
var objects = getByColor('aaa');
objects.forEach(function(obj) {
obj.x = 1;
obj.color = 'ccc';
})
  • Вопрос задан
  • 3940 просмотров
Пригласить эксперта
Ответы на вопрос 4
KOLANICH
@KOLANICH
Знаю JS, PHP, C++, C#
@agershun
Попробуйте Alasql - это "простенький" SQL на Javascript. Ниже приведен код, который решает Вашу задачу:

var res = alasql('SELECT COLUMN _ FROM ? WHERE x = ? AND y = ?',[array, 1,1]);


Другой вариант: можно прекомпилировать запрос, и тогда он будет работать намного быстрее:

var getByColor = alasql('SELECT COLUMN _ FROM ? WHERE x = ? AND y = ?');

var obj = getByColor([array,1,3]);


А можно и не прекомилировать, так как Alasql сохраняет откомпилированные запросы в кэш в виде функций и перед вызовом проверяет их наличие.

Вот пример на jsFiddle.
Ответ написан
Комментировать
@amaksr
Попробуйте StrelkiJS: https://github.com/amaksr/Strelki.js
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы