Как из двух списков разной длины собрать словарь Javascript?
Есть два списка:
const days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
const nums = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
Как на выходе получить словарь типа:
{1:'Monday', 2:'Tuesday', ... , 16:'Tuesday'}
Спасибо
Ответы (3 шт):
Автор решения: Павел Ериков
→ Ссылка
Например вот так:
var dict = {};
const days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
const nums = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
for(let i = 0; i < nums.length; i++)
dict[nums[i]] = days[i % days.length];
console.log(dict);
Автор решения: OPTIMUS PRIME
→ Ссылка
Циклом бежать по большему массиву, а индекс для мелкого массива брать остатком от деления ( индекса_большого_массива % на_длину_мелкого )
const days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
const nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
let dict = {};
nums.forEach((n, index) => dict[n] = days[index % days.length]);
console.log( dict );
Автор решения: Aziz Umarov
→ Ссылка
или так через reduce, воспользовался ответом от @OPTIMUS PRIME
const days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
const nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
let dict = nums.reduce((acc, n, index) => { acc[n] = days[index % days.length]; return acc}, {});
console.log( dict );