JSON 操作 - 对具有相同值的键进行计数,创建新对象并将计数作为值

JSON manipulation - count keys with same value, create new object with count as value

我想统计 JSON 个具有相同日期的节点,并创建一个以日期为键、计数为值的新对象。

那么,使用 jQuery 或 vanilla JS,我将如何转换它:

[
  {
    "date": "January 1"
  },
  {
    "date": "January 1"
  },
  {
    "date": "January 1"
  },
  {
    "date": "January 1"
  },
  {
    "date": "February 14"
  },
  {
    "date": "February 14"
  },
  {
    "date": "July 8"
  },
  {
    "date": "July 8"
  },
  {
    "date": "July 8"
  },
  {
    "date": "December 11"
  }
]

进入这个:

[
  {
    "January 1": 4 // Number or String "4", doesn't matter
  },
  {
    "February 14": 2
  },
  {
    "July 8": 3
  },
  {
    "December 11": 1
  }
]

尝试这样的事情。

const data = [
  {
    "date": "January 1"
  },
  {
    "date": "January 1"
  },
  {
    "date": "January 1"
  },
  {
    "date": "January 1"
  },
  {
    "date": "February 14"
  },
  {
    "date": "February 14"
  },
  {
    "date": "July 8"
  },
  {
    "date": "July 8"
  },
  {
    "date": "July 8"
  },
  {
    "date": "December 11"
  }
]

let counter = {}

data.forEach(function(obj) {
    var key = obj.date
    counter[key] = (counter[key] || 0) + 1
})

console.log(counter)