Лучший способ справиться с захватом объекта из массива объектов? - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть JSON объект с, скажем, 500 объектами в массиве. На данный момент, чтобы найти тот, который я хочу, я использую jQuery 'each' и сравниваю id каждого объекта с идентификатором, который я ищу, вот так:

var desiredID = 500;
$.each(myObj.arrayOfObjects, function(k, oneObject){
    if((oneObject.lineid * 1) === (desiredID * 1)){
        // hooray! I have found my object
    }
});

Is есть лучший, более эффективный способ? Массив объектов потенциально может стать впечатляюще большим.

(В данном случае я использую jQuery, но это может быть также ванильный javascript.)

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

с ванилью js:

const obj = arrayOfObjects.find(({ lineid }) => lineid === desiredID)

, если вы хотите преобразовать строку в число, используйте следующие трики:

         +'1' === 1 // true
        ~~'1' === 1 // true
  Number('1') === 1 // true
parseInt('1') === 1 // true

и для нужного ID вам не нужно актерский состав, потому что вы знаете, что это номер

0 голосов
/ 08 апреля 2020
myObj.mappedObjects = myObj.arrayOfObjects.reduce((r, e) => {
    r[+e.lineid] = e;
    return r;
}, {});

var desiredID = 500;
myObj.mappedObjects[desiredID];

Учитывая, что вы упомянули, возможно, наличие 500i sh элементов, если существует возможность повторного поиска элементов, я бы предложил преобразовать массив в карту для быстрого поиска идентификаторов в будущем.

Если конечная точка, или где-либо еще, вы получаете исходные данные, можете начать с того, чтобы начать в этом формате, даже лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...