数组方法

65 阅读3分钟
      • 基本数据类型都存储在栈区域
      • 复杂数据类型存储在堆区域.赋值是将对象在堆区域
      • 地址赋值给变量

数组常用方法

var arr=[10,20,30]

1.push
语法:  arr.push()      // 在数组arr中添加元素,括号里为要添加的元素,添加的位置为arr数组末尾.
2. pop
语法:  arr.pop()       //在数组arr弹出最后一个元素.

3. .unshift  
语法:  arr.unshift()   //在数组头部添加元素

4.shift   
语法:  arr.shift()     //弹出数组头部元素

5.splice(索引号,元素个数)
 语法: arr.splice(1,2)   //删除arr从索引号1开始的两个元素,也可以用splice在截取之后的元素索引号处添加新元素,语法如下
  arr.splice(索引号,元素个数,'要添加的元素')
  如果括号里只有一个元素,则表示截取这个序列号之后的元素形成一个新数组;如果括号里有两个元素,第二个元素则为结束的序列号,但新数组不包含结束序列号的元素(前包后不包)
  
6.reverse (): 反转数组
 arr.reverse()====>
 
7.sort()   :数组排序,排序默认由低到高,排序规则:按照字符编码unicode码. 可以在括号里添加排序规则(传参),如:
 arr.sort(function)  //括号里参数一般为一个函数
 
8. concat()   :拼接数组
 

image.png

9.join('+')   :把数组里的元素拼接为字符串 括号里为元素之间的连接

11.indexOf   获取数组中元素的索引号,括号里为数组中的元素,返回值为索引号(可用来判断元素是否存在,不存在,返回值
12.includes  判断数组元素是否存在,返回值为布尔值

数组遍历方法

1.forEach
匿名函数
arr.forEach(function(item/index)){
       // 第一个形参 item    数组元素
       // 第二个形参 index   索引号
}

2. map    :遍历数组,映射一个新数组
 var newarr=arr.map(function(item,)){
   return  item-10  //返回一个新数组(原数组-10)
}

3. filter 与map使用方法类似,按照我们的条件来删选数组
var newarr=arr.filter(function(item,)){
     return item>10   //return一个新数组,满足条件的元素将其加入到newarr中
}

4.Find  查找满足条件的第一个元素
var newItem=arr.find(function(item)){
   return item<10   //查找小于10的元素,返回值为这个元素
}

5. every  :遍历数组,查找数组元素是否全部满足条件,满足返回true,不满足返回false
//判断是都所有学生成绩都合格
var arr=[98,90,80,60,50,77]
function testEvery(){
   var isOk=arr.every(function(item)){
       return item>60
   }
}

6. some : 查找是否有一个满足条件,有返回true ,没有返回false
function testSome(){
    arr
}

7.reduce 
reduce(function(

数组的排序

1.冒泡排序:相邻两个数两两比较,如果前面的数大与后面的数,就交换位置,第一轮比较结束后,在数组最末尾得到最大的数; 依次重复操作

2.选择排序  : 每次循环找到最小值,与第一个元素的序号进行交换
         1,n个数,进行n-1个选择,
         2,每次选择 未排序数中找最小数下标,与前面的数交换位置
         var arr=[1,4,5,7,2,3]
         var n=arr.length
         var mainIndex=i
         for(var j= i+1;j<n;j++){
           
         }
         

3. 数组去重

方法1:

1.定义一个空数组 ,存储去重后元素 2.遍历原数组 ,判断新数组中是否有原数组元素,如果没有,则存储到新数组中(用到for循环,indexOf,push)

 function testIndexOf()
 { var arr = [9, 2, 5, 2, 8, 2, 5]
 var newArr = [] //1.存储去重后元素 
 // 2. 遍历原数组 for (var i = 0; i < arr.length; i++) { 
 // 3. 判断新数组      中是否有原数组当前元素,如果没有,存储到新数组中
 // 
 if(newArr.indexOf(arr[i]) == -1){ 
 // newArr.push(arr[i]) // } // 
 if(newArr.includes(arr[i]) == false){ 
 if (!newArr.includes(arr[i])){
  newArr.push(arr[i]) } 
  } 
  console.log(newArr)
  }
        

方法2:

利用双重for循环+splice实现 内层循环以此判断后面元素是否与外层元素相同,如果相同,就截取掉.

     function test3() {
     var arr = [2, 2, 2, 5, 2, 8, 2, 5]
              // 0  1  2  3  4  5 
        //      [2, 2, 5, 2, 8, 2, 5]
       //    2 
     for (var i = 0; i < arr.length; i++) {
         var item = arr[i] // 外层循环元素 
     for (var j = i + 1; j < arr.length; j++) {
           if(item == arr[j]){ 
            arr.splice(j,1) 
            j-- 
             } 
         } 
     } 
     console.log(arr) 
     } 
     test3()