运行结果如下:
参考代码如下:
<!doctype html>
<html>
<head>
<meta charset="UTF-8" />
<title></title>
</head>
<body>
<script type="text/javascript">
var array = ["m", "h", "a", "a", "b", "b", "c"];
function clearArray() {
var o = {};
for (var i = 0; i < array.length; i++) {
var item = array[i];
if (o[item]) {
o[item]++;
} else {
o[item] = 1;
}
}
var tmpArray = [];
for (var key in o) {
if (o[key] == 1) {
tmpArray.push(key);
} else {
if (tmpArray.indexOf(key) == -1) {
tmpArray.push(key);
}
}
}
return tmpArray;
}
document.write(clearArray(array));
</script>
</body>
</html>
这段代码考查的知识点主要包括JavaScript数组操作以及对象的键值对数据结构。下面是对这段代码的详细解析:
1. 定义变量`array`为包含重复元素的数组:["m", "h", "a", "a", "b", "b", "c"]。
2. 定义`clearArray`函数,其目的是去除数组中重复的元素,并返回一个不包含重复元素的新数组。
3. `clearArray`函数内部,首先定义一个空对象`o`,用来记录数组中每个元素出现的次数。
4. 使用for循环遍历原始数组`array`,对于每个元素:
- 检查对象`o`中是否已经存在该元素作为键(key)。
- 如果存在,则对应的值(value)加1;如果不存在,则在对象`o`中创建该键,并赋值为1。
5. 初始化一个空数组`tmpArray`,用来存放最终不重复的元素。
6. 再次使用for循环遍历对象`o`的键(即数组中不重复的元素):
- 如果某个键对应的值(value)等于1,说明这个元素在原始数组中只出现了一次,直接将其推入`tmpArray`。
- 如果值大于1,说明这个元素在原始数组中出现了多次,但由于之前已经处理过一次,所以不需要再次推入`tmpArray`。
7. 返回`tmpArray`,此时`tmpArray`中存放的就是原始数组中不重复的元素。
8. 使用`document.write`将`clearArray`函数的返回值输出到HTML文档中。
最终,这段代码会在页面上输出数组["m", "h", "a", "b", "c"]中不重复的元素,结果是["m", "h", "a", "b", "c"]。