Bigata
@Bigata
Web, PHP, JavaScript, HTML, Базы данных, Фриланс

Можно ли получить доступ к объекту?

Доброго времени всем. Есть объект, в нем лежат объекты. Есть ли способ вытащить внутренний объект, ключ которого (например ‘name’) совпадает с заданным, без перебора всего внешнего объекта и пошагового сравнения значения ключа?
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Без перебора, в общем случае, способа нет.

Но вы можете добавить индекс (словарь) и при занесении внутренних объектов записывать в индекс пары
значение_поля_внутреннего_объекта: ключ_внешнего_объекта


Примерно так
var house = {}; // внешний объект
var names = {}; // доп. словарь для поиска
function add(num, flat) {
  house[num] = flat; // добавили внутренний объект
  names[flat.name] = num; // запись для поиска в словарь
}

add(11, {name:"Vasya", phone:"555-111", area:111, price:1111});
add(22, {name:"Lena", phone:"555-222", area:222, price:2222});

Чтобы найти свойство, под которым записан объект, смотрите в "словаре":
names["Lena"] // 22

function get(name) {
  return house[ names[name]];
}

get("Lena") // {name:"Lena", phone:"555-222", area:222, price:2222}


Хотя проще сделать просто словарь значение_поля: сам_внутренний_объект
Ответ написан
Комментировать
Bigata
@Bigata Автор вопроса
Web, PHP, JavaScript, HTML, Базы данных, Фриланс
Сергей Соколов , жаль. Ваше решение, к сожалению, не то, хотя для промежуточного создания массива... Но мне кажется работать напрямую с установленными свойствами внутреннего объекта проще, чем пихать в массив-библиотеку.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы