如何在 JavaScript 中统计数组中重复名称出现的次数?
JavaScript 中的数组是一组存储在相邻内存位置的相同类型元素,并且可以使用索引到特殊标识符的索引分别引用每个元素。
让我们考虑一个包含重复名称出现的数组。数组如下所示:
var details = [
{
studentName: "John",
studentAge: 23
},
{
studentName: "David",
studentAge: 24
},
{
studentName: "David",
studentAge: 20
}
]
现在我们将计算数组中重复名称出现的次数。我们为此使用reduce()概念。结果如下:
John: 1 David: 2
让我们深入了解本文,以了解更多关于如何在数组中统计重复名称出现次数的信息。
使用 reduce()
reduce()方法传入先前元素计算的返回值,并依次对数组的每个元素执行用户提供的“reducer”回调函数。在整个数组上运行 reducer 会产生一个单一的值作为最终结果。
语法
以下是reduce()的语法:
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
为了更好地理解如何在数组中统计重复名称出现的次数,让我们看看以下示例。
示例
在下面的示例中,我们正在运行一个脚本以及一个reduce()来打印重复名称出现的次数。
<!DOCTYPE html>
<html>
<body>
<script>
var array = [10, 22, 10, 25, 10, 67, 10, 68];
var search = 10;
var count = array.reduce(function(n, val) {
return n + (val === search);
}, 0);
document.write(count);
</script>
</body>
</html>
当脚本执行时,它将在网页上生成一个包含数字“4”的输出,这是脚本中用于计数的值出现的次数。
示例
执行以下操作以查看如何在获取重复名称出现次数的计数中使用reduce()。
<!DOCTYPE html>
<html>
<body>
<script>
var details = [{
studentName: "John",
studentAge: 23
}, {
studentName: "David",
studentAge: 24
}, {
studentName: "John",
studentAge: 21
}, {
studentName: "John",
studentAge: 25
}, {
studentName: "Bob",
studentAge: 22
}, {
studentName: "David",
studentAge: 20
}]
var output = Object.values(details.reduce((obj, {
studentName
}) => {
if (obj[studentName] === undefined) obj[studentName] = {
studentName: studentName,
occurrences: 1
};
else obj[studentName].occurrences++;
return obj;
}, {}));
document.write(JSON.stringify(output));
</script>
</body>
</html>
运行上述脚本后,输出窗口将弹出,显示由运行脚本触发的事件导致的名称出现次数的计数。
让我们再看几个例子。
示例
考虑以下示例,这里我们声明一个存储空对象的变量,并启动一个循环来迭代数组并打印输出。
<!DOCTYPE html>
<html>
<body>
<script>
const array = ['ab', 'bc', 'ab', 'bc', 'cb'];
const count = {};
for (const element of array) {
if (count[element]) {
count[element] += 1;
} else {
count[element] = 1;
}
}
document.write(JSON.stringify(count));
</script>
</body>
</html>
当脚本执行时,事件被触发并提供重复元素出现的次数以及网页上的数组。
示例
让我们看看下面的例子,这里我们使用 foreach 迭代数组并将出现次数存储在另一个变量中。
<!DOCTYPE html>
<html>
<body>
<script>
var array = [{
"car": "rx100",
"color": "black"
}, {
"car": "bmw",
"color": "grey"
}, {
"car": "rx100",
"color": "black"
}, ];
let b = {};
array.forEach(element => {
b[element.car] = (b[element.car] || 0) + 1;
})
document.write(JSON.stringify(b));
</script>
</body>
</html>
运行上述脚本后,事件被触发并在网页上显示数组及其出现次数。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP