Есть следующий список:
let lst = ["km-m", "km-cm", "km-mm"]
На выходе необходимо получить словарь следующего типа:
let myDict = {
"km-m": {
"km": 0,
"m": 0
},
"km-cm": {
"km": 0,
"cm": 0
},
"km-mm": {
"km": 0,
"mm": 0
},
};
Пишу следующий цикл и не знаю как наполнить словарь
for(let i=0; i < joinList.length; i++) {
let template = joinList[i].split('-');
console.log(joinList[i]);
Object.assign(convertData, {joinList[i]: 0});
};
В цикле ощибка, не пойму почему нельзя поставить ключем lst[0] например. Прошу помочь исправить код или предложить альтернативное решение Спасибо!
{joinList[i]: 0}
— так будет синтаксическая ошибка, потому что в качестве ключей объекта можно использовать или строки, или идентификаторы (т.е. то, что разрешено как имя переменной). Если вы хотите использовать в качестве ключей произвольные выражения (в том числе переменные), их нужно заключать в квадратные скобки: { [joinList[i]]: 0}
. Тогда вычисленное значение выражения (или его строковой вариант, если результатом будет не строка) будет использовано в качестве ключа.
Можно так:
const lst = ["km-m", "km-cm", "km-mm"];
const obj = {};
for (const key of lst) {
const subkeys = key.split('-');
obj[key] = { [subkeys[0]]: 0, [subkeys[1]]: 0 };
}
console.log(obj);
Или так:
const lst = ["km-m", "km-cm", "km-mm"];
const obj = lst.reduce(
(obj, key) => {
const [subkey1, subkey2] = key.split('-');
obj[key] = { [subkey1]: 0, [subkey2]: 0 };
return obj;
},
{}
);
console.log(obj);
P.S. Создание словаря с параметрами:
const correlations = {
km: {
m: 1000,
cm: 100000,
mm: 1000000,
},
}
const list = ['km-m', 'km-cm', 'km-mm'];
const number = 3;
console.log(getDic(number, list, correlations));
function getDic(number, list, correlations) {
const obj = {};
for (const key of list) {
const [subkey1, subkey2] = key.split('-');;
obj[key] = {
[subkey1]: number,
[subkey2]: number * correlations[subkey1][subkey2]
};
}
return obj;
}
let lst = ["km-m", "km-cm", "km-mm"];
console.log(Object.fromEntries(lst.map(m=>[m,Object.fromEntries(m.split('-').map(s=>[s,0]))])));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Есть задачаСоздать веб приложение которое будет получать данные из Яндекс метрики, яндекс директ, google analytics и google ads по api и формировать csv файл...