#javascript #arrays #performance #object #search
#javascript #массивы #Производительность #объект #Поиск
Вопрос:
Допустим, у меня есть два объекта, один из которых содержит данные, а другой содержит значения, которые являются ключами в первом объекте:
const obj = {
'one': {},
'two': {},
'three': {},
'four': {},
'five': {},
};
const tstObj = {
'someKey1': 'one',
'someKey2': 'three',
'someKey3': 'four'
};
Мне нужно создать другой объект, содержащий элементы с ключами tstObj
и соответствующими значениями srcObj
. Для приведенного выше примера это будет:
result = {
'someKey1': {}, //one object
'someKey2': {}, //three object
'someKey3': {}, //four object
}
Это то, что я сделал:
const result = {};
Object.keys(tstObj).forEach(key => {
if (srcObj[key]) {
result[key] = srcObj[tstObj[key]]
}
});
Хотя приведенное выше решение будет работать для простого и небольшого объекта, как в примере, я не слишком доволен этим решением для большого объекта, который глубоко вложен. Есть ли лучший и более эффективный способ добиться того же для глубоко вложенного объекта?
Комментарии:
1. Что вы подразумеваете под «глубоко вложенным»? Это не очень понятно, можете ли вы привести пример такого ввода и ожидаемого результата?
2.
if (srcObj[key])
— эта проверка, похоже, ничего не делает в данном примере. Что касается производительности, каждый из этих вложенных объектов на самом деле является отдельным; если то, что вы делаете, это просто создание ссылок, вы должны быть в безопасности с точки зрения памяти.3. Под глубоко вложенным вы подразумеваете, что вам нужно извлекать глубокие пути свойств, такие как
some.deep.path
?4. Извините, что недостаточно ясно. Глубоко вложенный объект будет иметь те же родительские ключи, то есть «один», «два», «три». Если подумать об этом внимательно, глубоко вложенная структура на самом деле не имеет значения в моем вопросе. Это больше связано с тем, что это действительно большой объект.