JavaScript数组高级API

数组的遍历

数组的本质是对象,因此可以用高级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;      //降序排列 
})

你可能感兴趣的:(JavaScript数组高级API)