JavaScript数组的常用方法
1 去重方法
let arr = [12, 1, 12, 3, 1, 88, 66, 9, 66];
let s = new Set(arr);
let s1 = Array.from(s);
console.log(s1)
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:可选 结束截取的下标 可以为负 若省略,截取到数组末尾