扫码一下
查看教程更方便
要计算数组中每个元素的出现次数:
for...of
循环遍历数组。1
。const arr = ['a', 'b', 'a', 'a', 'c', 'c'];
const count = {};
for (const element of arr) {
if (count[element]) {
count[element] += 1;
} else {
count[element] = 1;
}
}
console.log(count); // {a: 3, b: 1, c: 2}
我们首先声明一个变量并将其设置为一个空对象。
for...of
循环允许我们遍历数组。
我们的 if
条件检查我们是否已经遇到特定的数组元素并在对象上初始化它。
如果这是我们第一次遇到数组元素,我们将元素设置为对象的键并将其值初始化为 1
。
如果我们再次遇到相同的元素,我们会增加对象中相应键的值。
最终结果是一个对象,其键是数组元素和值 - 它们在数组中的出现。
如果我们的数组由数字组成,这种方法也适用。
const arr = [1, 1, 1, 2, 3, 3];
const count = {};
for (const element of arr) {
if (count[element]) {
count[element] += 1;
} else {
count[element] = 1;
}
}
console.log(count); // {1: 3, 2: 1, 3: 2}
这似乎有点令人困惑,因为对象键只能是 JavaScript 中的字符串或符号类型。
但是,我们仍然可以通过任何一种方式访问对象的键。
console.log(count[1]); // 3
console.log(count['1']); // 3
如果我们尝试使用数字访问对象的键,它将自动转换为字符串。
Internet Explorer 不支持
for...of
循环。 如果必须支持浏览器,需要改用基本的 for 循环。
const arr = ['a', 'b', 'a', 'a', 'c', 'c'];
const count = {};
for (let index = 0; index < arr.length; index++) {
const element = arr[index];
if (count[element]) {
count[element] += 1;
} else {
count[element] = 1;
}
}
console.log(count); // {a: 3, b: 1, c: 2}
此代码片段实现了相同的目标,但是我们使用基本的 for
循环,而不是 for...of
循环。
它有点杂乱,并且看起来并不直接,但是大多数开发人员习惯于阅读 for 循环,如果我们必须支持 Internet Explorer,它就可以完成工作。