首先就是很常用的es6 数组去重
let arr1 =[1,2,3,4,1,3,5]
let setArr1 = new Set(arr1)//arr1去重
let newArry = Array.from(setArr1)//结果
//newArry=[1,2,3,4,5]
set 还有几种方法
add(value)//添加某个值,返回Set结构本身。
delete(value)//删除某个值,返回一个布尔值,表示删除是否成功。
has(value)//返回一个布尔值,表示该值是否为Set的成员。
clear()//清除所有成员,没有返回值
数组几个排序的方法
//array.sort()方法用于对数组的元素进行排序,并返回原数组
[1, 9, 3].sort((a, b) => {
return a-b; // 从小到大排序
});
// [1, 3, 9]
//array.reverse()方法将数组中元素的位置颠倒,在原数组上操作,然后返回原数组
let arr = [1,2,3,4,5]
console.log(arr.reverse()) // [5,4,3,2,1]
console.log(arr) // [5,4,3,2,1]
数组的sort()和reverse()方法都对原数组进行了修改,返回值是经过排序之后的数组。
查找元素在数组中的位置方法或者有无
[1, 9, 3, 4, 9].indexOf(9); // 1 返回某个指定的字符串值在字符串中首次出现的位置
[1, 9, 3, 4, 9].lastIndexOf(9); // 4 返回一个指定的字符串值最后出现的位置
//这两个方法都返回查找的项在数组中的位置,在没找到的情况下返回-1
[1, 5, 10, 15].findIndex(function(value, index, arr) {
return value > 9;
}) // 2
//返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1
//includes(searchElement[, fromIndex = 0])方法返回一个布尔值
//表示某个数组是否包含给定的值。
//这个方法接受两个参数:searchElement:要查找的元素;fromIndex:开始查找的索引位置。
[1, 2, 3].includes(2) // true
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
数组的截取
//第一种 slice
[1,2,3,4,5,6].slice(1,4); // [2,3,4] 截取1到4下标的代码 不过注意不包括结尾4 所以截取至结尾就可以用arry.length 来做
//还有一种是过滤方法 filter
[1,2,3,4,5,6].filter((e,i)=>{
return 0<i&&i<4
}) // [2,3,4] 自由判断
数组的过滤
//array.find()找出第一个符合条件的数组元素。
//它的参数是一个回调函数,所有数组成员依次执行该回调函数
//直到找出第一个返回值为true的成员,然后返回该成员。
//如果没有符合条件的成员,则返回undefined
[1, 4, -5, 10].find((n) => n < 0)
// -5
//find()方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组。
[1, 5, 10, 15].find(function(value, index, arr) {
return value > 9;
}) // 10
//array.filter(callback, thisArg)方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组。
// callback定义如下,三个参数: element:当前元素值;index:当前元素下标; array:当前数组
function callback(element, index, array) {
// callback函数必须返回true或者false,返回true保留该元素,false则不保留。
return true || false;
}
const filtered = [1, 2, 3].filter(element => element > 1);
// filtered: [2, 3];
//array.every(callback[, thisArg])方法检测数组中的每一个元素是否都通过了callback测试
//全部通过返回true,否则返回false。
// callback定义如下: element:当前元素值;index:当前元素下标; array:当前数组
function callback(element, index, array) {
// callback函数必须返回true或者false告知every是否通过测试
return true || false;
}
let a = [1, 2, 3, 4, 5];
let b = a.every((item) => {
return item > 0;
});
let c = a.every((item) => {
return item > 1;
});
console.log(b); // true
console.log(c); // false
//array.some(callback[, thisArg])判断数组中是否包含可以通过callback测试的元素
//与every不同的是,这里只要某一个元素通过测试,即返回true。callback定义同上。
[2, 5, 8, 1, 4].some(item => item > 6);
// true
//array.map(callback[, thisArg])方法返回一个由原数组中的每个元素调用callback函数后的返回值组成的新数组。
let a = [1, 2, 3, 4, 5];
let b = a.filter((item) => {
return item > 3;
});
console.log(b); // [4 ,5]
let bb = [];
a.map((item) => {
if (item > 3) {
bb.push(item);
}
});
console.log(bb); // [4, 5]
let bbb = a.map((item) => {
return item + 1;
});
console.log(bbb); // [2, 3, 4, 5, 6]
//array.forEach(callbak)为数组的每个元素执行对应的方法
// callback定义如下: element:当前元素值;index:当前元素下标; array:当前数组
let a = [1, 2, 3, 4, 5];
let b = [];
a.forEach((item) => {
b.push(item + 1);
});
console.log(b); // [2,3,4,5,6]
//遍历数组的方法:entries()、values()、keys()
//这三个方法都是返回一个遍历器对象,可用for...of循环遍历,
//唯一区别:keys()是对键名的遍历、values()对键值的遍历、entries()是对键值对的遍历。
for(let item of ['a','b'].keys()){
consloe.log(item);
//0
//1
}
for(let item of ['a','b'].values()){
consloe.log(item);
//'a'
//'b'
}
let arr4 = [0,1];
for(let item of arr4.entries()){
console.log(item);
// [0, 0]
// [1, 1]
}
for(let [index,item] of arr4.entries()){
console.log(index+':'+item);
//0:0
//1:1
}