2017-10-04 11 views
-1
[{ 
    "day": "Sat", 
    "raw_date": "21/9/2017", 
    "value": 123 
},{ 
    "day": "Sun", 
    "raw_date": "22/9/2017", 
    "value": 4 
}] 

上記の配列にさらに3日を追加するにはどうすればよいですか?私はプッシュを行うことができない日プロパティを持っているので、私は最後の項目を取得し、そこから続行する必要があり、私はこのjavascriptマップを使用して配列を拡張する

const result = arr.map((obj, i) => { 
    if(i === arr.length - 1) { // should add 2 more days here 
     return { 
      day: moment(obj.day).add(1, 'd').format('DD MMM'), 
      raw_date: moment(obj.raw_date).add(1, 'ddd').format('d'), 
      value: 0 
     } 
    } 

    return obj 
}) 

を行うことを試みた。しかし2日目よりを追加する方法?別の地図を使って?私はそれを行うことができますが、よりエレガントなアプローチを探して知っている。

+0

"私はプッシュできません" - なぜですか?配列に物を追加するように設計されています。 – Quentin

+0

"最後のアイテムを手に入れてそこから進む必要があります" - これは 'arr [arr.length - 1]'を使用する – Quentin

+0

もっと優雅な方法は 'push'を使うことだと思います。 (地図の理解をテストするのは、もちろん学校の問題なのですが)。 – dork

答えて

0

ここで地図を使用する必要はありません。

var numberOfDates = 2;//change here if you want to vary it 
for(var i=0; i < numberOfDates; i++){ 
     var lastObj = arr[arr.length -1]; 
     arr.push({ 
      day: moment().isoWeekday(lastObj.day).add(1,'day').format('ddd'), 
      raw_date: moment(lastObj.raw_date, 'DD/M/YYYY').add(1,'day').format('DD/M/YYYY'), 
      value: 0 
     }); 
} 

Jsfiddleリンク:値の配列の長さを変換するためのhttp://jsfiddle.net/dp7rzmw5/4360/

+0

lastObjが定義されていません –

+0

@CeciliaChanは変数lastObjの宣言を忘れていました。私の答えを更新しました。今度は –

+0

をチェックしてください。これはうまくいかないでしょう、試してみました。同じraw_dateと1日後に、あなたはjsfiddleのurソリューションを試してみたいですか? –

関連する問題