在Angular 7中查找数组中唯一对象的数量

时间:2019-01-22 12:15:59

标签: angular typescript

说我有一个包含以下对象的以下数组:

array = [{name: 'foo', number: 1}, {name: 'foo', number: 1}, {name: 'bar', number: 1}]

我将如何查找该数组中foo的数量?我目前正在

search(name, array) {
    let count = 0;
    for (let i = 0; i < array.length; i++) {
      if (array[i].name=== name) {
        count++;
      }
    }
    return count;
  }

我希望能够运行search()函数,并能够获取名称为foo的对象数和名称为bar的对象数,而不是必须传递对象本身的名称。

2 个答案:

答案 0 :(得分:3)

let array = [{
  name: 'foo',
  number: 1
}, {
  name: 'foo',
  number: 2
}, {
  name: 'bar',
  number: 1
}]

function count(input) {
  var output = {};

  array.forEach(item => {
    if (output[item.name]) {
      output[item.name] += item.number;
    } else {
      output[item.name] = item.number;
    }
  });

  return output;
}

var result = count(array);
console.log(result);

您可以遍历项目,并为每个相同的名称添加计数。希望这就是您想要的,否则请告诉我

答案 1 :(得分:1)

使用filter函数

let array = [{name: 'foo', number: 1}, {name: 'foo', number: 1}, {name: 'bar', number: 1}]

let count = array.filter(e => e.name === "foo").length;
console.log(count)