2016-12-19 7 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] 

私はそのはweekdays

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

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

しかし、私は必要な結果の配列のサイズを保持する方法がわからない、対応するnumDaysに変換することができます変換機能を試みてきました。

乾杯!

+0

'。そのために単に 'map'を使うことはできません。 –

+0

私は正しい配列サイズ(7要素)を与える 'days'に' map'を実行しています。私の質問は '日中'の '平日 'を置き換えるための参照インデックスとして' numDays'を使う方法を考え出すことです。 –

答えて

2

私はあなたが[null, null, null, null, null, null, null]するdays変数が必要とは思いません。あなたはそれを実行している配列の同じサイズの配列を返しますmap`

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

関連する問題