簡體   English   中英

javascript 關聯數組中的數組推送

[英]array push in javascript associative array

我正在嘗試創建日期和樣式的關聯數組。 我期待一個像

{   
   dates: [{day: 1, month: 12, year: 2021}, {day: 15, month: 12, year: 2021}],
   styleClass: 'test'
},

我的代碼是

var markedDates = [];
markedDates['dates'].push('day: 1, month: 12, year: 2021');
markedDates['dates'].push('day: 15, month: 12, year: 2021');
markedDates['styleClass'].push('test');
console.log(markedDates);

返回錯誤

問題 1: markedDates已被定義為一個數組 ( [] )。 要將其定義為 object(這是您的預期輸出),請使用{} (JavaScript 中沒有“關聯數組”之類的東西;arrays 使用01等作為索引。對象使用01keyanother_key作為索引[或更准確地說是鍵]。)

問題 2:您尚未在markedDates日期中定義dates數組,這將導致引用錯誤。

問題 3:您將字符串推送到數組而不是對象。 這不會出錯,但不會產生預期的 output。

問題 4:您正在嘗試將styleClass用作數組 - 它只是markedDates中的字符串屬性。

以逐行方式修復您的代碼(保持與原始代碼的相似性):

 var markedDates = {}; markedDates.dates = []; markedDates.dates.push({day: 1, month: 12, year: 2021}); markedDates.dates.push({day: 15, month: 12, year: 2021}); markedDates.styleClass = "test"; console.log(markedDates);
 .as-console-wrapper { max-height: 100%;important: top; auto; }

但是,如果您在頂部靜態定義了預期的 output,則可以直接將其分配給變量,如下所示:

 var markedDates = { dates: [{ day: 1, month: 12, year: 2021 }, { day: 15, month: 12, year: 2021 }], styleClass: 'test' }; console.log(markedDates);

你應該考慮的事情 -

  1. 制作需要推入更大陣列的 object。 例如:以下代碼中的markedDate日期。
  2. 分配字符串應該直接使用等於運算符,不需要像在數組中那樣推送它
  3. 先將內部字段dates初始化為數組,然后再推入它

 var markedDates = []; var markedDate = {}; markedDate['dates'] = []; markedDate['dates'].push({day: 1, month: 12, year: 2021}); markedDate['dates'].push({day: 15, month: 12, year: 2021}); markedDate['styleClass'] = 'test'; markedDates.push(markedDate); console.log(markedDates);

暫無
暫無

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

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