数组的遍历
数组的本质是对象,因此可以用高级for in 循环来遍历数组,但是在企业开发中并不推荐用这种方法来遍历数组
- 在js中 for of 循环就是专门用来遍历数组的 用法和 for in 循环一样
注意点: 对象中的属性是无序的
forin循环是专门用于遍历对象的, 但是对象的属性是无序的, 所以forin循环就是专门用于遍历无序的东西的, 所以不推荐使用forin循环来遍历数组
let arr = [1,3,5,7,8];
for(let value of arr){
console.log(value) ;
}
在Array中有个forEach方法也可以用来遍历数组
forEach会自动调用传入的函数
let arr = [1,3,5,7,8];
arr.forEach(function (currentValue,currentIndex,currentArray){
console.log(currentValue,currentIndex,currentArray);
})
数组查找
- 数组的findIdex方法
findIndex方法: 定制版的indexOf, 找到返回索引, 找不到返回-1
let arr = [1,3,5,7,8];
let index = arr.findIndex(function (currentValue, currentIndex, currentArray) {
if(currentValue === 7){
return true;
}
});
console.log(index);// 3
- 数组的find方法
findIndex方法返回索引, find方法返回找到的元素
find方法如果找到了就返回找到的元素, 如果找不到就返回undefined
let arr = [1,3,5,7,8];
let value = arr.find(function (currentValue, currentIndex, currentArray) {
if(currentValue === 7){
return true;
}
});
console.log(value);// 7
数组的filter方法
数组的filter方法:
将满足条件的元素添加到一个新的数组中
let arr = [1, 2, 3, 4, 5];
let newArray = arr.filter(function (currentValue, currentIndex, currentArray) {
// console.log(currentValue, currentIndex, currentArray);
if(currentValue % 2 === 0){
return true;
}
});
console.log(newArray); // [2, 4]
数组的map方法
将满足条件的元素映射到一个新的数组中
let arr = [1, 2, 3, 4, 5];
let newArray = arr.map(function (currentValue, currentIndex, currentArray) {
// console.log(currentValue, currentIndex, currentArray);
if(currentValue % 2 === 0){
return currentValue;
}
});
console.log(newArray); // [undefined, 2, undefined, 4, undefined]
删除数组元素
遍历的同时清空数组
let arr = [1, 2, 3, 4, 5];
let len =arr.length;
for(let i =0;i < len; i++){
arr.splice(i,1);
}
console.log(arr);// [2,4]
删不干净的原因是,每删掉一个元素,数组里的内容都会向前挪
解决的方法有两个
一、 从后往前删
let arr = [1, 2, 3, 4, 5];
for(let i =arr.length -1;i >= 0; i--){
arr.splice(i,1);
}
console.log(arr);// []
二、 通过delete删除
let arr = [1, 2, 3, 4, 5];
for(let i =0;i
注意点: 通过delete来删除数组中的元素, 数组的length属性不会发生变化
数组排序
数组有专门的排序方法sort(); 默认为升序排列
let arr = [1,12,32,4,6,3];
arr.sort(); //默认升序
console.log(arr);
sort();可以接收参数,如果想要降序排列可以传入函数如下
let arr = [1,12,32,4,6,3];
arr.sort(function (a,b) {
if(a>b) {
//return 1; // 升序排列
return -1;//降序排列
}
else if (a
如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前;
如果 compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。
如果 compareFunction(a, b) 大于 0 , b 会被排列到 a 之前
注意点: 如果元素是字符串类型, 那么比较的是字符串的Unicode编码
- 小技巧:如果数组中的元素是数值类型
如果需要升序排序, 那么就返回a - b;
如果需要降序排序, 那么就返回b - a;
arr.sort(function (a,b) {
// return a-b; //升序排列
return b-a; //降序排列
})