Javascript:如何计算数组中相同对象的数量?

这是我的 json 对象。我在其中存储对象 ID 和对象类型。


let jsonData = [

   {"id": "1", "object": "pen"}, 

   {"id": "4", "object": "bag"}, 

   {"id": "2", "object": "paper"}, 

   {"id": "5", "object": "bottle"},

   {"id": "3", "object": "notepad"}, 

   {"id": "1", "object": "pen"}, 

   {"id": "4", "object": "bag"}, 

   {"id": "3", "object": "notepad"}, 

   {"id": "3", "object": "notepad"}, 

   {"id": "1", "object": "pen"}, 

   {"id": "2", "object": "paper"},

   {"id": "1", "object": "pen"},      

]

所以,现在我想使用上面的数组以下面的格式创建一个新数组:


|---------------------|------------------|

|        Object       |        Unit      |

|---------------------|------------------|

|         Pen         |         4        |

|---------------------|------------------|

|         Paper       |         2        |

|---------------------|------------------|

|        Notepad      |         3        |

|---------------------|------------------|

|         Bag         |         2        |

|---------------------|------------------|

|        Bottle       |         1        |

|---------------------|------------------|

简而言之,新数组应该显示所有对象及其计数值。提前致谢。


holdtom
浏览 181回答 1
1回答

慕后森

你可以简单地使用Array.reduce函数let jsonData = [      {"id": "1", "object": "pen"},       {"id": "4", "object": "bag"},       {"id": "2", "object": "paper"},       {"id": "5", "object": "bottle"},      {"id": "3", "object": "notepad"},       {"id": "1", "object": "pen"},       {"id": "4", "object": "bag"},       {"id": "3", "object": "notepad"},       {"id": "3", "object": "notepad"},       {"id": "1", "object": "pen"},       {"id": "2", "object": "paper"},      {"id": "1", "object": "pen"},         ];   let summary = jsonData.reduce( (ac, el) => {    let obj = ac.find(e => e.object == el.object);    if (!obj) {      obj = {object: el.object, unit: 0};      ac.push(obj);    }    obj.unit = obj.unit + 1;    return ac;   }, []);      console.log(summary);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript