Задать вопрос
@KrotKrotKrotTest

Как, имея строку с ключами, получить массив значений из вложенных объектов?

Есть объект:

const soundParts = {
    number: {
      1: "../../sound/1.mp3",
      2: "../../sound/2.mp3",
      3: "../../3в.mp3",
      4: "../../4.mp3"
    },
    letter: {
      а: "../../sound/a.mp3",
      б: "../../sound/b.mp3",
    }
}

Есть строка:

const letter = "b12";

Нужно letter разделить на элементы, чтобы было "б", "1", "2"и извлечь соответствующие значения из вложенных объектов soundParts. Т.е. 1 сравнить с number 1, 2,3, 4 и если 1 совпадает с 1, то в result я записываю '../../sound/1.mp3'.

Я не могу понять как мне положить значения массива в переменную:

for (let key in soundParts) {
  const newLetter = letter.split("");
  const result = "";
    if (key === newLetter) {
    result.push(key);
    console.log(result);
  }
}
  • Вопрос задан
  • 188 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const result = Array
  .from(letter, n => soundParts[Number.isNaN(+n) ? 'letter' : 'number'][n])
  .filter(Boolean);

или

const result = Object
  .entries(Object.assign({}, ...Object.values(soundParts)))
  .reduce((acc, n) => (letter.includes(n[0]) && acc.push(n[1]), acc), []);
Ответ написан
hahenty
@hahenty
('•')
пробовать в консоли
( (w,sp) => ( sp = {...sp.number, ...sp.letter}, [...w].map( l => sp[l] ) ) )("б12",{
    number: {
      1: "../../sound/1.mp3",
      2: "../../sound/2.mp3",
      3: "../../3в.mp3",
      4: "../../4.mp3"
    },
    letter: {
      а: "../../sound/a.mp3",
      б: "../../sound/b.mp3",
    }
})
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы