2016-12-19 5 views
0

У меня есть два массива, который начинается как это:JavaScript - массив отображение с помощью другого массива

let days = [null, null, null, null, null, null, null]; 

const weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] 

В зависимости от того, какие данные мне дали, я хочу сопоставить новый массив с соответствующим будний день, но по-прежнему сохраните его в том же массиве размеров.

let numDays = ["0","2","4"] 

let days = days.map(?) 

days 
> ['Sunday', null, 'Tuesday', null, 'Thursday', null, null] 

Я попытался функция преобразования, которая может конвертировать numDays в соответствующем weekdays

const convert = function (c) { 
    return weekdays[c]; 
} 

numDays.map(convert) 
> ['Sunday', 'Tuesday', 'Thursday'] 

Но не уверен, как сохранить размер массива для результата мне нужно.

Cheers!

+0

'map' возвращает массив того же размера массива вы выполняете его. вы не можете просто использовать для этого 'map'. –

+0

Я выполняю 'map' в' days', который даст мне правильный размер массива (7 элементов). Мой вопрос заключается в том, как использовать 'numDays' в качестве ссылочного индекса для замены' weekdays' в 'days'. –

ответ

2

Я не думаю, что вам нужно переменную days быть [null, null, null, null, null, null, null].

const weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; 
 

 
let numDays = ["0","2","4"]; 
 

 
var days = weekdays.map(function(day, index){ 
 
    if (numDays.indexOf(index.toString()) >= 0){ 
 
    return day; 
 
    } else { 
 
    return null; 
 
    } 
 
}); 
 

 
console.log(days);

2

Этот подход может быть проще, чем при использовании map, вы можете использовать forEach для цикла по требуемым показателям, посмотрите на следующий день, и добавить их в свой days массив по мере необходимости.

const weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] 
 
let numDays = ["0","2","4"] 
 
let days = [null, null, null, null, null, null, null]; 
 
numDays.forEach(i=>days[i] = weekdays[i]); 
 
console.log(days);

+0

, но вам нужно определить массив с 7 'null' элементами. –

+0

Вопрос о том, что массив 'null' уже определен, если требуется более общий массив из n 'null', вы можете использовать что-то вроде 'let days = Array (7) .fill (null)' – dtkaias

Смежные вопросы