[英]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.