Превратите объект в массив записей (запись представляет собой пару ключ-значение, как массив), и затем вы можете использовать .find
для этого массива. Если запись соответствует условию, вы можете извлечь из нее ключ (или значение, или индекс):
const response = {
"1": {
"id": 1,
"title": "Port1",
"code": "P",
"accounting_code": "119"
},
"2": {
"id": 2,
"title": "Port2",
"code": "P2",
"accounting_code": "120"
},
"4": {
"id": 4,
"title": "Port3",
"code": "P3",
"accounting_code": "122"
},
"5": {
"id": 5,
"title": "Port4",
"code": "P4",
"accounting_code": "123"
}
};
const entry = Object.entries(response).find(([, obj]) => obj.code === 'P3');
if (entry) {
console.log(entry[0]);
}
Если вас не интересует соответствующий ключ или значение, просто индекс, затем возьмите Object.values
, чтобы получить массив, и вызовите findIndex
для него :
const response = {
"1": {
"id": 1,
"title": "Port1",
"code": "P",
"accounting_code": "119"
},
"2": {
"id": 2,
"title": "Port2",
"code": "P2",
"accounting_code": "120"
},
"4": {
"id": 4,
"title": "Port3",
"code": "P3",
"accounting_code": "122"
},
"5": {
"id": 5,
"title": "Port4",
"code": "P4",
"accounting_code": "123"
}
};
const index = Object.values(response).findIndex(obj => obj.code === 'P3');
console.log(index);
Но код обычно не должен зависеть от ключей объектов определенного порядка. Несмотря на то, что порядок определен c, он может быть несколько запутанным, и числовые ключи c, такие как 1
и 5
, могут быть «упорядочены» внутри объекта только в порядке возрастания числительных c. Если вам действительно нужен индекс, вам следует рассмотреть возможность изменения серверной части для отправки массива объектов вместо одного объекта.