【JS】数组去重
- 有一个数组 arr = [‘a’, ‘c’, ‘b’, ‘c’, ‘e’, ‘d’, ‘a’, ‘f’, ‘e’, ‘g’, ‘b’, ‘a’, ‘g’] 要求去除掉数组中重复的元素!
案例分析:
- 目标:把旧数组里面不重复的元素选出来放到新数组中,重复的元素只保留一个,放到新数组中去重;
- 核心:遍历数组,然后拿着旧数组去查询新数组,如果该元素在新数组中没有出现过,就添加进去,否则不要添加;
- 如何知道该元素是否存在?利用新数组.indexOf(数组元素),如果返回 -1 说明新数组中没有该元素;
普通版:
<!-- 要求去掉数组中重复的元素 -->
<script>
var arr = ['a', 'c', 'b', 'c', 'e', 'd', 'a', 'f', 'e', 'g', 'b', 'a', 'g'],
num = [];
var max, temp, newArr = [];
for (var i = 0; i < arr.length - 1; i++) {
if (newArr.indexOf(arr[i]) == -1) {
newArr[newArr.length] = arr[i];
} else {
num[num.length] = i;
}
}
console.log('被去掉数组元素的索引号:');
console.log(num);
console.log('去重后的新数组:');
console.log(newArr);
for (i = 0; i < newArr.length - 1; i++) {
for (var j = 0; j < newArr.length - 1; j++) {
if (newArr[j] > newArr[j + 1]) {
temp = newArr[j];
newArr[j] = newArr[j + 1];
newArr[j + 1] = temp;
}
}
}
console.log('去重/排序后的数组:');
console.log(newArr);
</script>
运行结果:
升级版:
<!-- 升级版 -->
<script>
var arr1 = ['a', 'c', 'b', 'c', 'e', 'd', 'a', 'f', 'e', 'g', 'b', 'a', 'g'],
num = [];
var number = [7, 4, 1, 1, 4, 7, 2, 5, 6, 3, 2, 5, 28, 19, 6, 4, 3],
obj = {};
function unique(arr) {
var newArr = [];
if (checkArray(arr)) {
for (var i = 0; i < arr.length - 1; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr[newArr.length] = arr[i];
} else {
num[num.length] = i;
}
}
return newSort(newArr);
} else {
return "error:传入的这个参数要求必须是数组形式 [参数1,参数2,···]";
}
}
function checkArray(arr) {
var flag = false;
if (Array.isArray(arr)) {
return true;
}
}
function newSort(arr3) {
for (var i = 0; i < arr3.length - 1; i++) {
for (var j = 0; j < arr3.length - 1; j++) {
if (arr3[j] > arr3[j + 1]) {
var t = arr3[j];
arr3[j] = arr3[j + 1];
arr3[j + 1] = t;
}
}
}
return arr3;
}
console.log('去重并且排好序的新数组:');
console.log(unique(arr1));
console.log(unique(number));
console.log('重复的数组元素的索引号:');
console.log(num);
console.log('检测不是数组的元素:');
console.log(unique(obj));
</script>
运行结果:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)