繁体   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