javascript内置对象一: Array数组

时间:2021-04-10 05:37:38

在JavaScript中的任何事物,字符串,数组,函数等等都是对象。

javascript内置对象一:  Array数组

理解:浏览器自己封装好的对象,可以直接使用。

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

  

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

push   /pʊʃ/  增加 在末尾增加              unshif   /ʌn'ʃɪft/   将这些元素插入到一个数组的开始部分

pop   /pɒp/   删除末尾一个                  shift   /ʃɪft/   移除第一个

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组  

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

如果数组全是数字时使用arr.sort()会产生错误的排序结果,这里需要修正如:

var arr = [-5,23,-4,55,-16,-11,25];

console.log(arr.sort());

var result = arr.sort(function(a,b){ return a-b; })  这样输出才正确,必须指定排序条件指定 由小到大 升序排列即可。

===============

<script>
    //创建数组的两种方式:
    //一,构造函数表示法 var array=new Array(n);  方法Array()中的 Array首字母必须大写。 n从0开始,为0可以不写,表示空数组。
    //二,字面量表示法:var infos=[5,"nam",true,Object]; 数组可以用来保存一组不同类型的数据
    //此外使用索引进行读写修改值:
    //读:console.log(infos[3]);
    //改:infos[3]="woaini";
    //数组的length属性可以获得数组里面的数据长度:console.log(infos.length);
    
    //构造函数表示法
    var nums=new Array(3);//已知数组长度,不写长度默认为零。即空数组。
    var colors=new Array();//定义空数组。       
    var pics=new Array(1,2,3,4);//已知数组内容。
    console.log(colors);
    console.log(nums);
    console.log(pics);

//字面量表示法,可以任意类型数据。{email:304676177@qq.com}Object对象
    var infos=[6,"zheng",true,{email:"304676177@qq.com"}]
    console.log(infos[3]);//数组取值,下标从0开始
    infos[2]="aini";//修改对应索引的数组值。
    console.log(infos[2]);
    console.log(infos[5]);//超过数组下标的索引,显示未定义undefined;

//数组中四个栈方法。栈方法只能增删数组第一个和最后一个值
    //push()  unshift()  pop()  shift()
    //array.push(a,b,c...); 在数组后面添加n个值。返回值:添加后数组长度。
    //array.unshift(a,b,c,d...);在数组前面添加n个值。返回值:添加后数组长度。
    //array.pop();删除数组最后一个值。返回值:被删除的对象。
    //array.shift();删除数组第一个值。返回值:被添加的对象。
    var array=[1,"a","b",2,3];
    var len=array.push(4,5,6,7);//数组最后添加n个值:(4,5,6,7)
    document.write(array+"<br/>");//输出添加后的整个数组
    document.write(len);//输出添加后数组的长度,等于array.length.

var a=[1,"a","b",2,3];
    var len=a.unshift(4,5,6,7,8);//数组前面添加n个值:(4,5,6,7,8)
    document.write(a+"<br/>");//输出添加后的整个数组
    document.write(len);//输出添加后数组的长度,等于array.length.

var b=[1,"a","b",2,3];
    var obj=b.pop();//删除数组最后一个值:3。可以调用多次,表示删除多次。
    document.write(b+"<br/>");//输出删除后的整个数组。
    document.write(obj);//输出被删除的对象:3

document.write("<hr/>");
    var c=[1,"a","b",2,3];
    var obj=c.shift();//删除数组第一个值:1。可以调用多次,表示删除多次。
    document.write(c+"<br/>");//输出删除后的整个数组。
    document.write(obj);//输出被删除的对象:1

//-------join分隔符---------
    var str=["a","b","c","d","e"];
    //array.join(separator);  使用分隔符把数组组成一串字符串。
    //separator分隔符,不写默认在数组中插入逗号。可自定义连接符。返回值:字符串。
    console.log(str.join()); //默认把数组用逗号分开重新组成一串字符串。
    console.log(str.join("-"));//把数组用 “-” 分开重新组成一串字符串。
    console.log(str.join("+++"));//把数组用 “-” 分开重新组成一串字符串。

//-------reverse反序---------
    var array=[1,2,3,4,5];
    //array.reverse(); 反序,把数组的顺序颠倒过来。返回值:数组
    console.log(array.reverse());// 5,4,3,2,1

var array=["e","d","g","b","h"];
    console.log(array.sort());//降序:b,d,e,g,h 。
    //使用默认排序:a到b降序,如果想反过来就使用array.reverse()进行排序。
    console.log(array.sort().reverse());//反序: h,g,e,d,b

//-------sortby排序依据---------
    //说白了只有两种排序:
    //sort()方法用于对数组的元素进行排序,sort里面可以接收一个比较函数作为参数,return y-x时是降序排序;return x-y时,升序排序。
    //一,array.sort() 默认升序排列,按照第一个字符排序(遵循:1-9,a-b)。另含有字母的所有数组都是按照首字符进行排序。
    //二,纯数字,按照整个数字进行大小排序:
    //1, array.sort(sort(function(a,b){return a-b}));  升序
    //2, array.sort(sort(function(a,b){return b-a}));  降序

var array=["uef",22,66,9,"def",-44,-12,"gge"];
    console.log(array.sort());//默认排序,第一个字符排序
    //array.sort(sortby);按照某种规则排序。默认按照所有数组值的第一个字母或者数字进行排序:1到9,再a到b...
    //数组字母,数字混排,无法比较大小,则下面自定义排序规则,是按照数组对象的第一个数字或首字母进行排序的:先1到9,再a到b。。。返回值:数组
    //sort(:排序依据,对于数字,字母混排无法比较大小,按照第一个字母或数字,按照1-9,a-b排序。
    //sortby:排序依据,对于纯数字,是对整个数组对象的大小进行升降序排列,return a-b 升序 ,return b-a降序
    //一, array.sort(sort(function(a,b){return a-b}));  升序
    //二, array.sort(sort(function(a,b){return b-a}));  降序

var array=[21,144,32,74,15];//纯数字,按照每个值大小进行排序。
    console.log(array.sort());//默认按照首字符排序。 144, 15, 21, 32, 74
    console.log(array.sort(function(a,b){return a-b}));//升序: 144, 15, 21, 32, 74
    console.log(array.sort(function(a,b){return b-a}));//降序:144, 74, 32, 21, 15

var array=["dbg","eee","jgs","ttt","fff"];
    console.log(array.sort());//默认排序,和 自定义a-b,按照首字母升序排列
    console.log(array.sort(function(a,b){return a-b}));//升序:按照首字母升序排列
    console.log(array.sort(function(a,b){return b-a}));//降序:按照首字母降序排列

var array=["e",8,"d",66,"g","b",16,"h",9];
    console.log(array.sort());//默认按照首字符排序:1-9再a-b。
    console.log(array.sort(function(a,b){return a-b}));//升序:h,g,e,d,b,8,9,16,66
    console.log(array.sort(function(a,b){return b-a}));//降序:66,16,9,8,b,d,e,g,h

</script>

===============

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

<script>
//==============数组操作方法concat合并,slice截取===============
    //concat 合并多个数组
    //array.concat(arr1,arr2,arr3...)  使用array与多个数组合并,返回值:数组。
    var array=[];//字面量创建数组
    var arr1=["a","b","c"];
    var arr2=["d","e","f"];
    var arr3=[1,2,3,4];
    console.log(array.concat(arr1,arr2,arr3));

//slice截取
    //var arr=[]; arr=array.slice(start,end); start,end截取数组所以start到end-1。即:不包含end。
    //如果end是负数:-2,即:start=array.length-2;即从start开始截取到end-1。
    var cols=["red","blue","yellow","orange","green","pink"];
    console.log(array=cols.slice(0));//slice(n),表示从数组的索引n开始一直截取到最后。这里相当于复制。
    console.log(array=cols.slice(2,5));//表示从数组索引2截取到5,不包括5。5是不包括。
    console.log(array=cols.slice(-2,5));//如果start是负数,array.length数组长度加上-2等于4,即截取范围:4到5,不包括5.
    //console.log(array=cols,slice(5,3)); //start=5,end=3, start>end 报错slice is undefined。未定义。

//-----------
    //面试题,复制下面数组,越多越好
    var newArray;//未定义,所以使用时千万记住先声明定义,即使是null或者是空"",也比undefined好,因为undefined很有可能会报错。
    var arr1=["a","b","c"];
    var arr2=["d","e","f"];
    var arr3=[1,"yes",5,"false"];

//复制数组方法一:
     //声明未定义的变量
    newArray1=new Array();//构造函数定义空数组。构造函数使用(),字面量创建数组才使用[]。
    newArray1=[].concat(arr1);//array.concat(arr1,arr2,arr3),合并多个数组。[]表示一个空数组。
    console.log(newArray1);

//复制数组方法二:
    //声明未定义的变量
    newArray2=new Array();//构造函数定义空数组。构造函数使用(),字面量创建数组才使用[]。
    newArray2=arr2.slice(0);
    console.log(newArray2);

//复制数组方法三:
    //声明未定义的变量
    newArray3=new Array();//构造函数定义空数组。构造函数使用(),字面量创建数组才使用[]。
    for (var i = 0; i < arr3.length; i++) {
        newArray3.push(arr3[i]);
    }
    console.log(newArray3);
</script>

============

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

javascript内置对象一:  Array数组

<script>
    //splice /splaɪs/  拼接  
    //删除,添加,替换:array.splice(index,n,"a","b","c","d");
    //index,n :表示从索引index开始删除n个元素。然后在索引index前面添加:"a","b","c","d"。
    //index,n,n=0时,表示删除0个元素,即表示添加:"a","b","c","d"。
    //省略: "a","b","c","d";   array.splice(index.n);表示从索引index开始,删除n个元素。
    
    var array=["a","b","c","d","e","f"];
    //删除
    var arr=array.splice(2,3);//表示从索引值从2开始,删除三个数组元素。
    var arr=array.splice(2);//表示索引值从2开始,删除后面的所有数组元素。
    var arr=array.splice(2,0);//表示索引值从2开始,0表示删除个数,所以一个都不删除。
    console.log(array);
    console.log(arr);

var array=["a","b","c","d","e","f"];
    //添加 返回值:空数组
    arr1=array.splice(2,0,1,2,3);//2,0 :表示从索引2开始不删除任何值,在索引2的前面添加:1,2,3。
    console.log(arr1);//添加操作返回值为空数组
    console.log(array);//Array(9) [ "a", "b", 1, 2, 3, "c", "d", "e", "f" ]

var array=["a","b","c","d","e","f"];
    //替换  返回被删除的数组
    arr2=array.splice(2,2,1,2,3,4);//2,2 :表示从索引2开始删除两个元素,且从索引2开始添加数组:1,2,3,4。
    console.log(arr2);//返回值:Array(3) [ "c", "d"]
    console.log(array);//返回值:Array(8) [ "a", "b", 1, 2, 3, 4, "e", "f" ]
</script>

==================================

CSS3中

javascript内置对象一:  Array数组  

javascript内置对象一:  Array数组

<script>
    //==========ECMAScript新增属性,存在兼容性==============
    //indexOf(searchValue,startIndex),lastIndexOf(searchValue,startIndex)是ECMAScript新增属性,存在兼容性
    
    var array=[1,2,"b",3,4,"a","b",4,"c","d"];
    //array.indexOf(searchValue,startIndex索引值可选); 存在返回searchValue的索引,不存在则返回-1.
    //从数组索引startIndex,开始向后查找searchValue所在的索引值。
    var pos=array.indexOf("b");//返回Number:2  从数组开头查找第一个"b"的索引。
    console.log(pos);//返回Number:2;
    var pos1=array.indexOf("b",3);//返回Number:6  从数组的索引3开始向后寻找"b"的索引
    console.log(pos1);//返回Number:6

var array=[1,2,"b",3,4,"a","b",4,"c","d"];
    //array.lastIndexOf(searchValue,startIndex索引值可选); 存在返回searchValue的索引,不存在则返回-1.
    //从后向前查找数组中searchValue的索引值。
    var p1=array.indexOf("b");//返回:2    从数组前面向后面查找第一个"b"的索引值。
    console.log(p1);//返回:2   查找对象存在返回索引值,不存在返回:-1.
    var p=array.lastIndexOf("b");//返回:6   从数组后面向前查找第一个"b"的索引值。
    console.log(p);//返回:6   查找对象存在返回索引值,不存在返回:-1.
    var p2=array.lastIndexOf("b",5);//返回值:2,索引5的位置:"a",即从索引值:5 = "a"的位置开始向前查找第一个"b"的索引。
    console.log(p2);

//indexOf(searchValue,startIndex),lastIndexOf(searchValue,startIndex)是ECMAScript新增属性,存在兼容性
    //为了兼容其他浏览器可以自己封装一个方法进行兼容:
    function ArrayIndexOf(array,searchValue){
        for (var i = 0; i < array.length; i++) {//遍历数组
            if (array[i]===searchValue) {//遍历数组,是否有值全等于searchValue。一定要全等,因为7不等于"7"。
                return i;//数组中存在searchValue,获取该值的索引值。
            }
        }
        return  -1;//不存在,则返回number:-1.
    }
    var array=[1,2,"b",3,4,"a","b",4,"c","d"];
    alert(ArrayIndexOf(array,"c"));//从前向后查询数组中"c"的索引值:8
</script>javascript内置对象一:  Array数组