javascript - 如何计算数组中具有特殊形式的相同项目(javascript)

标签 javascript lodash

例如:

input: var arr = ['a','b','c','a-5','c-2'];
output: var result = {'a':6,'b':1,'c':'3'} ;

我的解决方案是:

function countSameItem(arr) {
var counter = {};
for (var i = 0; i < arr.length; i++) {
  var item = arr[i].split('-');
  if (item.length === 1) {
    counter[item] = (counter[item] + 1) || 1;
  } else {
    counter[item[0]] = (counter[item[0]] + parseInt(item[1]) || parseInt(item[1]));
  }
}  
return counter;
} 

但我想考虑使用 lodash 的更简洁的解决方案

最佳答案

你可以在没有lodash的情况下简洁地做到这一点:

var result = ['a','b','c','a-5','c-2'].reduce(function(o, s) {
  var a = s.split('-').concat(1);
  return o[a[0]] = (o[a[0]] || 0) + +a[1], o;
}, Object.create(null));

关于javascript - 如何计算数组中具有特殊形式的相同项目(javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31352743/

相关文章:

javascript - 生成包含值及其兄弟值和父值的 HTML 表行

javascript - 下划线 - 从每个项目获取属性,分组并丢弃其余部分

php - 将文本字段和 html 表与数据库连接

javascript - 解析包含字符串的 float

javascript - 如何在firestore中创建新的用户文档

javascript - 如何在获取元素值之前检查数据是否已加载到元素中

javascript - DOM如何获取Knockout JS值

javascript - Lodash 转换不转换对象

javascript - 如何获得具有特定属性的嵌套对象的计数?

javascript - Lodash 更新数组之间的值