计数一个项目出现在数组中的次数
#javascript #初学者 #数组

JavaScript数组方法是非常强大的功能(方法),它们已经抽象了许多功能。这些方法可帮助开发人员轻松操纵阵列以实现所需的结果。
检查array methods以获取JavaScript中一些数组方法的列表。

例如;想象一下,您正在使用下面的数组,并且需要计算数组中每个元素出现的次数。

const data = [
  'car',
  'car',
  'truck',
  'truck',
  'bike', 'SUV', 'van','car',
  'walk',
  'car',
  'van',
  'bike',
  'walk',
  'car',
  'van',
  'car',
  'truck',
];

可以使用几个数组方法来获得所需的结果。

使用reduce()方法计算项目数

//set the result to a variable
let itemsObject = data.reduce((accumulator, item) => {
  if (accumulator[item]) {
    ++accumulator[item];
} else {
    accumulator[item] = 1;
}
return accumulator;
}, {})


//USING TENARY OPERATOR
let itemsObject = data.reduce((accumulator, item) => {
 return accumulator[item] ? ++accumulator[item] : (accumulator[item] = 1), accumulator
}, {})


console.log(itemsObject)
/*
 {
  bike: 2,
  car: 6,
  SUV: 1,
  truck: 3,
  van: 3,
  walk: 2
}
*/

reduce()是一种有助于获取数组中每个项目的出现数量的方法。

计算使用for of循环的项目数

for of循环是for loop的修改。它使遍历阵列,地图,字符串等迭代更加容易。它的功能就像forEach()方法一样运行。 for of循环和forEach()方法之间的主要区别在于,for of loop与async函数更兼容。

//initialize an empty object to store the items
let countVal = {};
for (val of data) {
  if (countVal[val]) {
    countVal[val] += 1;
  } else {
    countVal[val] = 1;
  }
}

console.log(countVal)
/*
 {
  bike: 2,
  car: 6,
  SUV: 1,
  truck: 3,
  van: 3,
  walk: 2
 }
*/

结论

其他几个数组方法也可以用来完成此任务,但是,如果您需要计算数组中存在的项目数,则使用for of循环是可取的,因为它与async函数的兼容性。 reduce()方法也是一个不错的选择。