Как положить значение ключа в переменную?
У меня есть массив soundParts. У меня есть переменная letter. Мне нужно переменную letter разделить на элементы, чтобы было "б", "1", "2"и сравнить все эти элементы с ключами массива после чего записать значения массива в новую переменную если они совпадают т.е. 1 сравнить с number 1, 2,3, 4 и если 1 совпадает с 1, то в result я записываю '../../sound/1.mp3'.
Я не могу понять как мне положить значения массива в переменную. Помогите разобраться, пожалуйста.
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";
for (let key in soundParts) {
const newLetter = letter.split("");
const result = "";
if (key === newLetter) {
result.push(key);
console.log(result);
}
}
Ответы (1 шт):
Автор решения: Юрий Копоть
→ Ссылка
- У вас объект с двумя свойствами
numberandletter. И в циклеforвы проходите именно по этим свойствам, а НЕ ПО нужными значениям (1: "../../sound/1.mp3"). Вам нужно или ДВА цикла (soundParts.numberandsoundParts.letter), или сначала объединить в один объектnumberandletter, что бы было такallParts = {1: "../../sound/1.mp3", ..., а: "../../sound/a.mp3"} - По поводу
const result = "";. Нужно создать новый массив, а не строку, и сделать это нужно ЗА ПРЕДЕЛАМИ цикла (иначе вы создаёте каждый новую переменную. А так как этоconstза пределами цикла эта переменная будет не доступна)
const soundParts = {
number: {
1: '../../sound/1.mp3',
2: '../../sound/2.mp3',
3: '../../3в.mp3',
4: '../../4.mp3'
},
letter: {
a: '../../sound/a.mp3',
b: '../../sound/b.mp3',
}
};
const letter = 'b12';
// объединенние данных, в один объект
const allParts = {...soundParts.number, ...soundParts.letter};
// создания результатирующего массива, ЗА пределами цикла
const result = [];
for (const key in allParts) {
// проверяете, есть ли ключ в строке
if (letter.includes(key)) {
// если да, добавляет в массив СВОЙТВО, а не ключ
result.push(allParts[key]);
}
}
console.log(result);