javascript - 如何在 JavaScript 字典中存储数组的值?

标签 javascript arrays dictionary

我想将数组值存储在js字典中(对于每个日期键,都有一个该日期的对象数组)。 这可能吗?如果没有,最好的方法是什么? 这是数据(从 json 获取):

[
  {
    "date":"2015-02-08",
    "hour":6,
    "mac_address":"0C:3E:9F:60:53:32",
    "is_inside":"0"
  },
  {
    "date":"2015-02-08",
    "hour":6,
    "mac_address":"40:0E:85:52:68:4E",
    "is_inside":"0"
  },
  {
    "date":"2015-02-08",
    "hour":6,
    "mac_address":"60:F8:1D:DB:E4:A0",
    "is_inside":"0"
  }
]

我尝试了以下方法,但它只是生成一个字符串的长值。

 for (var i=0; i<data.length; i++){
     usersByDay[data[i].date] += data[i];
    }

我该怎么做才能制作这样的数据结构:

{date: [object, object, object], another_date: [object...]}, i.e:

{"2015-02-08": [
  {
   "date":"2015-02-08",
   "hour":6,
   "mac_address":"0C:3E:9F:60:53:32",
   "is_inside":"0" },
  {
    "date":"2015-02-08",
    "hour":6,
    "mac_address":"40:0E:85:52:68:4E",
    "is_inside":"0" }]
  }

最佳答案

+= 不会将值推送到 JavaScript 中的数组中,但 push 可以!您还需要检查该键是否存在,如果不存在则创建一个新数组。

for (var i = 0; i < data.length; i++) {
    var item = data[i];

    if (usersByDay[item.date]) {
        usersByDay[item.date].push(item);
    } else {
        usersByDay[item.date] = [item];
    }
}

或者,如果您喜欢“奇特”:

for (var i = 0; i < data.length; i++) {
    var item = data[i];

    (usersByDay[item.date] || (usersByDay[item.date] = [])).push(item);
}

关于javascript - 如何在 JavaScript 字典中存储数组的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29784976/

相关文章:

c# - Dictionary<string, int> 增加值

javascript - Echarts:绘制信号的方差

javascript - 本地主机 jquery.google-search-master 控制台错误 - $.GoogleSearch 不是构造函数

javascript - 在 javascript Ajax 调用中从 Web 服务中的 XMLDocument 获取响应...?

php - 如何找到PHP中两个数组之间的差异?

python - 如何在 64 位环境中处理 ctypes 中的字符串数组 (char **)?

javascript - 使用 jquery UI 从 ul 中的列表中拖动特定部分?

c++ - 打印出指向 char 数组第一个索引的指针的值

python - 当键是字符串(名称)时,按字母顺序对字典进行排序

swift - 随机化字典中的值并在标签中显示它们 SWIFT