array push in 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);

哪个returns错误

问题 1:markedDates 已定义为数组 ([])。要将其定义为一个对象(这是您预期的输出),请使用 {}。 (在 JavaScript 中没有 'associative array' 这样的东西;数组使用 01 等作为索引。对象使用 01 , key, another_key 作为索引 [或键,更准确地说].)

问题2:您没有在markedDates中定义dates数组,这会导致引用错误。

问题 3:您将字符串而不是对象推入数组。这不会出错,但不会产生预期的输出。

问题 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; }

但是如果您在顶部静态定义了预期的输出,您可以直接将其分配给变量:

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

console.log(markedDates);

你应该考虑的事情 -

  1. 创建一个需要被推入更大数组的对象。例如:下面代码中的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);