JavaScript数组的常用方法与去重

1 去重方法

  • Set 是一个不重复的数组

  • Array.from : 将set数据结构转成真正的数组结构;
let arr = [12, 1, 12, 3, 1, 88, 66, 9, 66];
			let s = new Set(arr);
			
			let s1 = Array.from(s);
			console.log(s1)
  • 通过indexof

let arr = [1,11,3,3,1,4,5,3];

			let newAry = [];
			for (let i = 0; i < arr.length; i++) {
				let cur = arr[i];
				if (newAry.indexOf(cur) === -1) {
					/* 判断cur值是否存在于newAry中,存在返回-1 ,不存在时将值存入newAry */
					newAry.push(cur);
				}
			}
			console.log(newAry);
  • 实现不重复的对象名

	let arr = ["小王", "小李", "小红", "小王", "小李", "小红"];

			function unique(ary) {
				let obj = {};
				for (let i = 0; i < ary.length; i++) {
					let cur = ary[i];
					if (obj[cur]) {
						ary[i] = ary[ary.length - 1];
						ary.length--; // 删除最后一项
						i--;
						continue;
					}
					obj[cur] = cur; // 给obj新增键值对;属性名和属性值是一样的
				}
				return obj;
			}
			var x =unique(arr);
			console.log(x)

2 数组常用方法

在数组开头增加元素 unshift()

  • arrObj.unshift(元素1,元素2,…)
  • 在 首部 添加一个或多个元素
  • 返回值:新数组的长度

在数组末尾添加元素push()

  • arrObj.push(元素1,元素2,…)
  • 在 尾部 添加一个或多个元素
  • 返回值:新数组的长度

删除数组开头的元素shift()

  • arrObj.shift() 在 开头 删除数组元素
  • 返回值:删除的元素

删除数组结尾元素pop()

  • arrObj.pop() 在 尾部 删除数组元素
  • 返回值:删除的元素

数组元素的删除与增加splice()

  • arrObj.splice(参数1,参数2,参数3) 在参数1位置删除参数2长度的元素,并把参数3添加进数组,位置为参数1的位置。
  • 参数1:必需 开始删除/添加位置 可以为负
  • 参数2:必需 删除元素的个数
  • 参数3:可选 添加的元素 多个元素之间用逗号隔开
  • 返回值: 数组 删除的元素构成的数组

数组的排序sort()

  • arrObj.sort(参数) 参数:可选 函数
  • 注意:
    1.参数不写 会按照unicode编码进行排序
    2.参数里的函数
    arrObj.sort(function(x,y){
    return x - y; //升序
    return y -x; //降序
    });

在return 后可以写对应的排序条件,从而实现不同的排序。

颠倒reverse()

  • arrObj.reverse() 颠倒数组

数组的迭代

foreach

arrObj.forEach(function(value,index,list){
value 数组元素
index 数组下标
list 数组
console.log(value,index);
})
无返回值

var str=[1,2,3,4];
			str.forEach(function(item,index,self){
				console.log("元素",item,"索引",index,"自己",self)
			})

映射 map

映射
arrObj.map(function(val,i,list){
val 数组元素
i 数组下标
list 数组
return 值;
});
有返回值

	var str=[1,3,5];
			var str1=str.map(function(item,index,self){
				console.log("元素",item,"索引",index,"自己",self);
				return item*2		
			})
			console.log(str1)

过滤 filter

过滤
arrObj.filter(function(val,i,list){
val 数组元素
i 数组下标
list 数组
return 值;
});
有返回值

var arr1 = [1, 3, 50, 39, 18];
			var arr2 = arr1.filter(function(item) {
				//1.第一个方法 
				// if (item>20) {
				// 	return true;
				// } else{
				// 	return false;
				// }

				//2.第二个方法
				return item > 20;
			})
			console.log("arr1", arr1);
			console.log("arr2", arr2);

累计 reduce

arrObj.reduce(function(prev,val,i,list){
prev 前一项
val 当前元素
i 数组下标
list 数组
return 值;
});
有返回值

	var arr =[2,3,4];
	var ret=arr.reduce(function(a,b){
			return a+b;
	})
	console.log(ret)

数组的连接concat()

  • arrObj.concat(数组1,数组2 ,…)
  • 返回值:连接后的数组 参数可以是连接的数组,也可以是元素.

数组按分隔符连接转换成字符串 join()

  • arrObj.join(参数)
  • 参数:可选 - 分隔符 若省略,默认用逗号分隔
    返回值:字符串

截取数组slice()

  • arrObj.slice(参数1,参数2) 也可以作为字符串截取方法
  • 参数1:必需 开始截取的下标 可以为负,-1代表最后一个元素,-2代表倒数第二个元素
  • 参数2:可选 结束截取的下标 可以为负 若省略,截取到数组末尾

猜你喜欢

转载自blog.csdn.net/qq_40994735/article/details/108269174