<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 要求:以对象的形式统计字符串中每一个元素出现的次数,不限制 key 的顺序
function count(str) {
// 不能输入空字符串
if (!str) {
alert('不能为空!')
return
}
// 将字符串转换成数组
let arr = str.trim().split('')
// 创建一个空对象
let obj = {}
// key 数组里面每一项
// 比如说将字符串转换为数组之后是['a', 'b', 'c'],那么 Key 就是 'a', 'b', 'c'
for (const key of arr) {
// 比如说,obj.a 有没有值,有值就再加 1,没有值就给它赋值为 1
obj[key] ? obj[key]++ : obj[key] = 1
}
// 顺带这提一嘴,如果使用的是 for in,那么 key 代表的是数组每一项的索引
// 如果说数组 ['a', 'b', 'c'],那么 key 表示的是 0,1,2
// for (const key in arr) {
// // 比如说,obj.a 有没有值,有值就再加 1,没有值就给它赋值为 1
// obj[key] ? obj[key]++ : obj[key] = 1
// }
return obj
}
console.log(count('abcdabce')); // {a: 2, b: 2, c: 2, d: 1, e: 1}
// 如果使用的是 for in,console.log(count('abcdabce')); 就会输出下面的结果:
// {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, a: 2, b: 2, c: 2, d: 1, e: 1}
</script>
</body>
</html>
for of 与 for in
该文章提供了一个JavaScript函数,用于统计字符串中每个字符出现的次数。函数首先检查输入是否为空,然后将字符串转换为数组,创建一个空对象来存储计数。通过遍历数组,更新对象中对应字符的计数值。示例展示了如何使用此功能并比较了使用`for...of`和`for...in`循环的不同结果。
摘要由CSDN通过智能技术生成