JS基础四(数组去重和统计元素的个数)
程序员文章站
2022-03-22 09:57:22
JS数组去重和统计元素个数数组去重统计数组中每个元素的个数数组去重使用splice()方法与双层循环去除重复的元素splice()方法用于删除原数组的一部分成员,并可以在删除的位置添加新的数组成员,返回值是被删除的元素。例: let a = [2, 4, 1, 2, 4, 5, 9, 5]; function b(a) { for (let i = 0; i < a.length; i++) {...
JS数组去重和统计元素个数
数组去重
- 使用splice()方法与双层循环去除重复的元素
splice()方法用于删除原数组的一部分成员,并可以在删除的位置添加新的数组成员,返回值是被删除的元素。
例:
let a = [2, 4, 1, 2, 4, 5, 9, 5];
function b(a) {
for (let i = 0; i < a.length; i++) {
for (let j = i + 1; j < a.length; j++) {
if (a[i] === a[j]) {
a.splice(j,1)
//j--;
}
}
}
}
b(a)
console.log(a); //[2, 4, 1, 5, 9]
- 使用indexOf()方法去除重复的元素
indexOf方法返回给定元素在数组中第一次出现的位置,返回结果是匹配开始的位置。如果没有出现则返回-1
例:
var arr = [2, 4, 1, 2, 4, 5, 9, 5];
var newArr = [];
for (var i = 0, len = arr.length; i < len; i++) {
if (newArr.indexOf(arr[i]) == -1) {
newArr.push(arr[i]);
}
}
console.log(newArr);//[2, 4, 1, 5, 9]
- 使用set与Array.from()方法去除重复的元素
Array.from方法可以将 Set 结构转为数组。
例:
var arr = [2, 4, 1, 2, 4, 5, 9, 5];
var newArr = Array.from(new Set(arr));
console.log(newArr);//[2, 4, 1, 5, 9]
- 利用对象的属性不能相同的特点进行去重
例:
var a = [2, 4, 1, 2, 4, 5, 9, 5];
var newArr = [];
var o = {};
for (let i = 0; i < a.length; i++) {
var t = a[i];
if(o[t]){ // 标记是否处理过
}else{
newArr.push(a[i]);
o[t] = true;
}
}
console.log(newArr)//[2, 4, 1, 5, 9]
- 利用对象的属性不能相同的特点进行去重
例:
Array.prototype.distinct = function () {
var arr = this,
i,
obj = {},
result = [],
len = arr.length;
for (i = 0; i < arr.length; i++) {
if (!obj[arr[i]]) { //如果能查找到,证明数组元素重复了
obj[arr[i]] = 1;
result.push(arr[i]);
}
}
return result;
};
var a = [2, 4, 1, 2, 4, 5, 9, 5];
var b = a.distinct();
console.log(b.toString()); //2,4,1,5,9
- 数组递归去重
运用递归的思想先排序,然后从最后开始比较,遇到相同,则删除
例:
Array.prototype.distinct = function () {
var arr = this,
len = arr.length;
arr.sort(function (a, b) { //对数组进行排序才能方便比较
return a - b;
})
function loop(index) {
if (index >= 1) {
if (arr[index] === arr[index - 1]) {
arr.splice(index, 1);
}
loop(index - 1); //递归loop函数进行去重
}
}
loop(len - 1);
return arr;
};
var a = [2, 4, 1, 2, 4, 5, 9, 5];
var b = a.distinct();
console.log(b.toString()); //1,2,4,5,9
统计数组中每个元素的个数
var a = [1,1,2,3,4,5,5,6];
function f(a) {
var obj = {};
for (let i = 0; i < a.length; i++) {
var t = a[i];
if (obj.hasOwnProperty(t)){
obj[t] = obj[t]+1;
}else{
obj[t] = 1;
}
}
return obj;
}
console.log(f(a));//{1: 1, 2: 2, 4: 2, 5: 2, 9: 1}
var n = [2, 4, 1, 2, 4, 5, 9, 5];
var m = {}
for (var i = 0; i < n.length; i++) {
var v = n[i];
var counts = m[v];
if (counts) {
m[v] += 1;
} else {
m[v] = 1;
}
}
console.log(m)//{1: 1, 2: 2, 4: 2, 5: 2, 9: 1}
总结
以上是关于JavaScript数组去重和统计数组中每个元素出现次数的几种方法,不足之处,日后会继续改进。
本文地址:https://blog.csdn.net/weixin_46628546/article/details/107522513
上一篇: for 提取文本整行内容的方法
下一篇: 人工智能核心产业规模已达200亿元