簡體   English   中英

遍歷數組並將其推入數組 object javascript

[英]Loop through an array and push it into array of object javascript

所以我嘗試循環一個數組並將其推入此代碼中的 object:

   const past7Days = [...Array(7).keys()].map(index => {
var date = new Date();

  const local = new Date();
  local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
  local.setDate(date.getDate() - index);

  return local.toJSON().slice(0, 10);
});
let data={};
let arr=[]
for (var i = 0; i < past7Days.length; i++) {
    console.log(past7Days[i]);
  return arr.push(data["key"] = past7Days[i]) 
}

我期望的是:

[{key:"date"},{key:"date2"}]

有人能告訴我我哪里做錯了嗎

假設您只想要一個數組,其中的元素類似於 {"key": <string representation of a date> },您可以試試這個:

 const past7Days = [...Array(7).keys()].map(index => { var date = new Date(); const local = new Date(); local.setMinutes(date.getMinutes() - date.getTimezoneOffset()); local.setDate(date.getDate() - index); return local.toJSON().slice(0, 10); }); let arr=[] for (var i = 0; i < past7Days.length; i++) { // console.log(past7Days[i]); arr.push( {key: past7Days[i] } ) } console.log(arr);

在您的嘗試中,只有一個這樣的 object 創建( data )並且對data[key]的分配只是繼續覆蓋同一對象的屬性。 此外,該push不會推送 object,而是分配的字符串。

您可以在第一次迭代中立即創建每個 object,使用{ key: string-value } object 文字並返回它。

無關,但你不應該那樣使用getTimezoneOffset 在邊界情況下(比如當夏令時在同一天切換時)它可能會產生不希望的結果。 而是考慮您可以根據當前語言環境的時區將日期轉換為字符串。 例如,瑞典語言環境也使用“YYYY-MM-DD”格式(如toJSON ),當與toLocaleDateString一起使用時,它將使用語言環境的日期:

 const past7Days = Array.from({length: 7}, (_, index) => { const local = new Date(); local.setDate(local.getDate() - index); return { key: local.toLocaleDateString('en-SE') }; }); console.log(past7Days);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM