JavaScript 数组篇

数组问题
1.创建数组
(1)利用new创建数组 var 数组名=new Array()

  也可以 var arr=new Array(2,3);
(2)  利用数组字面量创建数组(常用)var 数组名=[ ];(var arr=[1,2,'pink'])(数组里的数据类型并不拘泥于一种)
2.数组长度
(1)数组.length
  (2)  修改数组长度 
        arr.length=指定长度。
         增加数组索引

(3)检测是否为数组

  ①instanceof  运算符,可以检测是否为数组

   var  arr=[ ];

      conseole.log(arr instanceof  Array);

  ②Array.isArray(参数);

    console.log(Array.isArray(arr));

3.添加删除数组元素的方法

方法名 说明 返回值
 push(参数1...)

末尾添加一个或多个元素,注意修改原数组       

  返回新的长度   
 pop()  删除数组最后一个元素,把数组长度减一,无参数,修改原数组   返回删除的元素的值  
 unshift(参数1...) 向数组的开头添加一个或多个元素,注意修改原数组 返回新的长度
 shift() 删除数组的第一个元素,数组长度减一,无参数,修改原数组 返回第一个元素的值

4.数组排序

 方法名   数组   是否修改原数组 
 reverse() 颠倒数组中元素的顺序,无参数 该方法会改变原来的数组,返回新数组
 sort()  对数组的元素进行排序 该方法会改变原来的数组,返回新数组

reverse:

 var arr=[1500,1200,1800,2000,2100];
       arr.reverse();
       console.log(arr);

sort();

当像使用reverse()一样使用sort()时,数组中若均为单数,则新数组按升序排列。若多位时则会出现错误,因为sort()会先比较最左端的数字进行排序。故一般

 var arr=[1500,1200,1800,2000,2100];
            arr.sort(function(a,b){
                return a-b;//此时为升序,return b-a为降序
            })
            console.log(arr);

5.获取数组元素索引

方法名 说明 返回值
indexOf() 数组中查找给定元素的第一个索引 如果存在,返货索引号,如果不存在,返回-1
lastIndexOf() 再数组中的最后一个的索引 如果存在,返回索引号,如果不存在,返回-1
  var arr=['pink','green','red','blue'];
           console.log(arr.indexOf('pink'));
           console.log(arr.lastIndexOf('pink'));
           //前者从前往后查找,后者从后往前查找,查找方向不同,但同一元素索引号为定值
        </script>

6.数组去重

①目标:把旧数组里面不重复的元素选取出来放到新数组里面。

②核心算法:遍历旧数组,用旧数组里的元素查询新数组,若该元素新数组里不存在,则添加进去,反之不添加。

问题:如何知道此元素新数组里是否存在??利用indexOf().

var arr=[1,3,5,6,3,1,2];
         var arr1=[];
         for(var i=0;i<arr.length;i++){
             if(arr1.indexOf(arr[i])===-1)
                arr1.push(arr[i]);
         }
         console.log(arr1);

7.将数组转换为字符串

方法名 说明 返回值
toString()  把数组转换成字符串,逗号分隔每一项 返回一个字符串

join('分隔符')

用于将数组中的所有元素转换为一个字符串 返回一个字符串
var arr=[1,2,3];
         console.log(arr.toString());
         var arr1=['green','red','blue'];
         console.log(arr1.join())//green,red,blue
         console.log(arr1.join('-'));//green-red-blue;
         //相比于toString,join()强大之处在于可以改变转换后的分隔符。
        </script>
方法名 说明 返回值
concat() 连接两个或多个数组,不影响原数组 返回一个新的数组
slice() 数组截取slice(begin,end) 返回被截取项目的新数组
splice() 数组删除splice(begin,end) 返回被删除项目的新数组,此操作会影响原数组

 基本包装类型

var str="andy";

console.log(str.length);//可以输出结果为4.

那么,问题来了。只有对象和复杂数据类型才有属性和方法,简单数据类型为何会有length属性呢?

基本包装类型:把简单的数据类型包装为复杂数据类型;

执行时实际上可分为以下三步

//(1)把简单数据类型包装为复杂数据类型
            var temp=new String('andy');
            //(2)把临时变量的值给str
            str=temp;
            //(3)销毁这个临时变量
            temp=null;

 

posted @ 2020-03-09 15:32  echobbd  阅读(118)  评论(0编辑  收藏  举报