[英]Assigning new value to an existing array (global var) within a function doesn't work. Why?
[英]Why doesn't this function replace the existing value in the associative array - Angular
我確保導入我的界面:
import { DayMoodModel } from '../objectModels/dayMood';
我用一些測試數據初始化了對象數組(date 屬性的類型為 Date,以防您想知道):
moodsAssigned: DayMoodModel[] = [
{
date: this.today,
mood: 'great'
}
]
這是有問題的 function:
addMood(moodName: string) {
let obj: DayMoodModel = { date: this.currentDay, mood: moodName };
for(let i = 0; i < this.moodsAssigned.length; i++) {
if(this.moodsAssigned[i].date == this.currentDay) {
this.moodsAssigned[i].mood = moodName;
}
else if(i == this.moodsAssigned.length - 1 && this.moodsAssigned[i].date != this.currentDay) {
this.moodsAssigned.push(obj);
}
}
console.log(this.moodsAssigned);
}
調用時,在對象數組中已經存在的日期上,它的行為就像該日期的數據不存在一樣。 我將在帖子底部附上控制台日志的照片。 在這個測試中,我在數組中已經存在的日期調用了 function,期望它用新的心情替換“心情”值,但它只是在數組中添加了一個新的 object。
我已經多次檢查此代碼,在關鍵位置注銷變量以確保它正確讀取所有內容。 不知道邏輯有什么問題。。
問題是你試圖比較兩個復雜的對象,但你只關心日、月和年。 只是一個直接的==
是行不通的。
這是另一個問題的正確比較 function: 如何判斷兩個日期是在同一天還是在同一小時?
function sameDay(d1, d2) {
return d1.getFullYear() === d2.getFullYear() &&
d1.getMonth() === d2.getMonth() &&
d1.getDate() === d2.getDate();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.