javascript - 为数组中的项目设置出现次数

标签 javascript arrays angularjs

我有一个地址类型如下的数组:

var addressTypes = [
   { "id": 748, "type_id": 0, name:"Previous"},
   { "id": 749, "type_id": 0, name:"Previous"},
   { "id": 750, "type_id": 1, name:"Vacation"}
];

在我看来,我应该像这样显示特定地址类型的名称及其出现次数:

<span ng-bind="address.name + ' Address ' + ($index == 0 ? '' : $index + 1"</span>

我如何手动计算和分配特定地址类型的出现次数以在 View 中使用它而不是 $index。

例如,在我的结果数组中我想得到这样的东西:

[ { "id": 748, "type_id": 0, namne: "Previous", count: 1},
  { "id": 748, "type_id": 0, name:  "Previous", count: 2},
  { "id": 750, "type_id": 1, name:  "Vacation", count: 1 }
]

最佳答案

您可以使用以下代码实现此目的,

addressTypes.forEach(function(itm) {
  this[itm['id']] = (this[itm['id']] || 0) + 1;
  itm.count = this[itm['id']];
}, {});

只需使用 forEach及其上下文接收器。这足以做到这一点。请注意,当您使用上下文接收器时,您不能使用箭头功能。因为箭头函数不允许您手动设置上下文。

关于javascript - 为数组中的项目设置出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57393611/

相关文章:

python - 如何检测只有一个元素的 numpy 数组的长度?

arrays - 如何在 Go 中分配非常量大小的数组

javascript - 过滤对象数组时无限 $digest 循环

javascript - 服务器端 VS 客户端呈现的模板性能?

javascript - 将 kendo grid DataSourceRequest 从 javascript 传递到 ASP.NET

javascript - 从 datetimepicker 时间选择器中的按钮添加小时和分钟

javascript - Font-Awesome 图标不改变颜色 React

javascript - Jquery 每 2 秒用数组中的单词替换文本

javascript - 推送后删除元素

javascript - 如何迭代数组中的值以匹配对象中的值并返回相应的对象?