У меня есть более десяти тысяч объектов, которые представляют некоторую информацию о двух ids
, которая выглядит как:Как структурировать поиск на основе двух ключей в Javascript
muchData = [
{
ids: ["123", "234"],
interestingData: 1
},
{
ids: ["123", "345"],
interestingData: 2
},
...
];
Я в настоящее время использую lodash, чтобы найти один объект, матчи двух ids
как:
function findData(id1, id2) {
return _.filter(muchData, function(d) {
return d.ids.indexOf(id1) > -1 && d.ids.indexOf(id2) > -1
})
}
где есть не гарантия того, я буду получать id1 и ID2 (то есть первое значение в массиве ids
может быть либо id1 или id2).
Есть ли лучший способ представить эту проблему, чтобы избежать фильтрации всего массива muchData
для каждого поиска?
Сколько раз вам нужно называть 'findData'? Стоит ли реструктурировать ваши данные? – Derlin
Потенциально 50+ раз на клиенте. Он помогает заполнять строки информации, поскольку пользователь применяет различные фильтры. Я мог получать данные с сервера каждый раз, когда применяются фильтры, но все остальные данные уже находятся на клиенте, и я пытался избежать этого перехода. Я открыт для реструктуризации данных, но в идеале должен держать все на клиенте. –
Являются ли какие-либо из значений свойств id (в массиве) уникальными? Если это так, я бы предложил объединить отдельные идентификаторы вместе (от 'id: [" 123 "," 234 "]' до 'id:" 123234 "') и выполнить поиск, а затем выполнить поиск по этому объединенному значению свойства * или * создание массива и использование объединенного ключа в качестве индекса (хотя это, вероятно, создаст очень большой массив со множеством пустых/неопределенных записей). Если, однако, нет никаких гарантированных уникальных значений, то вы ограничены поиском, поскольку вы уже имеете * или *, чтобы перепроектировать исходный код, чтобы гарантировать уникальные значения свойств id. –