簡體   English   中英

為什么這個 function 不替換關聯數組中的現有值 - Angular

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

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