如何计算数组中同名对象的数量?

我有这个数组并试图获取具有相同name属性的对象的计数。我怎样才能做到这一点?也许以现代“es6”方式


let cars = [

    {id: 1, name: 'Mercedes', year: '2015'},

    {id: 2, name: 'Mercedes', year: '2000'},

    {id: 3, name: 'BMW', year: '2010'},

    {id: 4, name: 'BMW', year: '2004'},

    {id: 5, name: 'Volvo', year: '2012'},

    {id: 6, name: 'Volvo', year: '2014'} 

];


达令说
浏览 173回答 5
5回答

森栏

这是适合您的解决方案:let cars = [  { id: 1, name: "Mercedes", year: "2015" },  { id: 2, name: "Mercedes", year: "2000" },  { id: 3, name: "BMW", year: "2010" },  { id: 4, name: "BMW", year: "2004" },  { id: 5, name: "Volvo", year: "2012" },  { id: 6, name: "Volvo", year: "2014" },];let numbers = cars.reduce((acc, child) => {  if (!acc[child.name]) {    acc[child.name] = 0;  }  acc[child.name]++;  return acc;}, {});console.log(numbers);

千巷猫影

let cars = [  { id: 1, name: "Mercedes", year: "2015" },  { id: 2, name: "Mercedes", year: "2000" },  { id: 3, name: "BMW", year: "2010" },  { id: 4, name: "BMW", year: "2004" },  { id: 5, name: "Volvo", year: "2012" },  { id: 6, name: "Volvo", year: "2014" },  { id: 7, name: "Volvo", year: "2012" },  { id: 8, name: "Volvo", year: "2014" },  { id: 9, name: "Volvo", year: "2012" }];let result = cars.reduce((acc, child, index) => {    const indexFinded = acc.findIndex(el => el.name==child.name && el.year ==child.year);    const result = {}    if(indexFinded == -1) {        result.name = child.name;        result.year = child.year;        result.qtd = 1;        acc.push(result)    } else {        acc[indexFinded].qtd += 1    }    return acc;}, []);console.log(result);

一只名叫tom的猫

let cars = [    {id: 1, name: 'Mercedes', year: '2015'},    {id: 2, name: 'Mercedes', year: '2000'},    {id: 3, name: 'BMW', year: '2010'},    {id: 4, name: 'BMW', year: '2004'},    {id: 5, name: 'Volvo', year: '2012'},    {id: 6, name: 'Volvo', year: '2014'} ];let obj = {}cars.forEach((item) => {  //console.log(obj[item.name]) this return as undefined  if (!obj[item.name]) {    obj[item.name] = 1;  } else {    obj[item.name] += 1;  }})console.log(obj)

呼啦一阵风

您可以使用一个简单的reduce函数,该函数将遍历每个对象并将计数加一let cars = [  { id: 1, name: "Mercedes", year: "2015" },  { id: 2, name: "Mercedes", year: "2000" },  { id: 3, name: "BMW", year: "2010" },  { id: 4, name: "BMW", year: "2004" },  { id: 5, name: "Volvo", year: "2012" },  { id: 6, name: "Volvo", year: "2014" }];let count = cars.reduce((acc, child) => {  acc[child.name] = (acc[child.name] || 0) + 1;  return acc;}, {});console.log(count);

DIEA

let counterObj = {}let cars = [    {id: 1, name: 'Mercedes', year: '2015'},    {id: 2, name: 'Mercedes', year: '2000'},    {id: 3, name: 'BMW', year: '2010'},    {id: 4, name: 'BMW', year: '2004'},    {id: 5, name: 'Volvo', year: '2012'},    {id: 6, name: 'Volvo', year: '2014'} ];for (property of cars){    counterObj[property.name] = 1 + (counterObj[property.name] || 0)}console.log(counterObj)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript