JS数组

作者: 三人行大道 | 来源:发表于2019-02-26 16:40 被阅读0次

    如何创建数组,

    数组元素的读和写
    数组元素的的length属性

    1.创建数组
    使用Array构造函数
    语法:new Array() 
    new 是创建新建的意思
    小括号()说明:
          (1)预先知道数组要保存的项目数量
          (2)向Array()构造函数中传递数组应包含的项
          使用数组字面量表示法
                var colors = new Array(3);
                console.log(colors)
    
                var nums = new Array(1,3,6,9);
                console.log(nums)
                
                var cl = ["red", "yellow", "black"];
                console.log(cl);
    
                var infos = [6, "marry", true, {email:"email@marry.com"}];
                console.log(infos)
    

    第二种创建数组元素的读写

    读取和设置时,使用方括号[],并且提供相应的索引
    说明,索引是从0开始的正整数

    var cl = ["red", "yellow", "black"];
    console.log(cl[1]); //读取cl这个数组中索引为1的值
    
    向数组中添加值
    var colors = new Array(3);
    colors[0]="#foo";
    colors[1]="#ofo";
    console.log(colors)
    

    数组的长度
    array.length
    1.获取数组array的长度,通过设置length可以从数组的末尾移除项或向数组中添加新项
    2.把一个值放在超出当前数组大小的位置上时,会重新计算数组
    长度值,长度值等于最后一项索引加1.

    数组的遍历

    var arr=["a", "b", "c", "d"];
    for(var i=0; i<arr.length; i++){
                    console.log(arr[i]);
                }
    

    数组的栈方法

    1.push() 语法arrayObject.push(newele1, newele2, ..,newelex)
    功能:把它的参数顺序添加到arrayObject的尾部
    返回值:把指定的值,添加到数组后的新长度
    var colors = new Array("red", "yellow");
    var lens = colors.push("blue", "hehehaha");
    console.log(lens)
    console.log(colors);
    console.log(colors.length);
    
    2.unshift()
    语法arrayObject.unshift(ne1,ne2,ne3,...,n3n)
    功能:
    把它的参数顺序添加到arrayObject的开头
    返回值:
    把指定的值添加到数组后的新长度
    
    var nums = [1,2,3,4,5];
    var size = nums.unshift(6,7);
    console.log(size); .//7
    console.log(nums); //(7) [6, 7, 1, 2, 3, 4, 5]
    
    
    3.pop()
    arrayObject.pop()
    功能:
    删除arrayObject的最后一个元素
    返回值:
    被删除的那个元素
    
    4.shift()
    arrayObject.shift()
    功能:
    删除arrayObject中的第一个元素
    返回值:
    被删除的那个元素
    

    数组的转换方法,
    语法:
    arrayObject.join(separator)
    功能:
    用于把数组中的所有元素放入一个字符串。
    返回值:
    字符串

    var nums = [1,2,3,4,5];
    var st = nums.join() 
    console.log(st) //1,2,3,4,5
    console.log(typeof st) //string
    
    var words = ["border", "left", "color"];
    var wa = words.join('-')
    console.log(wa); //string
    console.log(typeof wa) //border-left-color
    

    数组的重新排序方法
    stringObject.reverse()
    功能:
    用于颠倒数组中元素的顺序
    返回值:数组

    var nums = [1,2,3,4,5];
    console.log(nums)  // [1,2,3,4,5];
    nums.reverse()
    console.log(nums) // [5, 4, 3, 2, 1]
    
    var stt = ["a", "b", "c", "d"]; 要求返回"dcba"
    s = stt.reverse()
    console.log(stt) // ["d", "c", "b", "a"]
    ss = s.join("")
    console.log(ss) //dcba
    

    还是排序
    arrayObject.sort(sortby)
    功能:
    用于对数组的元素进行排序
    返回值:数组
    说明:1.即使数组中的每一项都是数值,sort()方法比较的也是字符串,这是因为sort这个方法,是把数组中每一个元素都调用了一下toString方法,把元素转换成字符串,在比较
    2.sort()方法可以接受一个比较函数作为参数

    var words = [9,23,15,88,12];
    console.log(words.sort())// [12, 15, 23, 88, 9],
    sort自动转换成字符串,所以才会造成这样的结果
    //降序
    var ss = words.sort(function(a,b){return b-a});
    console.log(ss)//[88, 23, 15, 12, 9]
    console.log(words)
    //升序
    var bb = words.sort(function(a,b){return a-b});
    console.log(bb)
    console.log(words)// [9, 12, 15, 23, 88]
    不管升序还是降序都是在原来的数组中做的变换,不会重新生出来一份数组
    

    数组的操作方法
    concat()
    arrayObject.concat(arrayX,arrayX,...,arrayX)
    功能:
    用于连接两个或多个数组。
    返回值:数组

    var arr1 = ["a", "b", "c"],
    arr2 = ["d", "e", 2, 3],
    arr3;
    //concat
    arr3=arr1.concat(arr2);
    console.log(arr3)
    ["a", "b", "c", "d", "e", 2, 3]
    

    slice(),这里我刚开始的时候是懵逼的
    arrayObject.slice(start, end)
    功能:从已有的数组中返回选定的元素
    参数:
    start(必选)规定从何处开始选取,如果是负数,从数组尾部开始算起
    end(可选)规定从何处结束选取,是数组片段结束的数组下标
    start和end指的是数组中索引值
    截取从start和end(不包含改该元素),即从start和end-1的元素

    var arr1 = ["a", "b", "c", "e", "f"];
    var newColors = arr1.slice(1,);
    console.log(newColors);//["b", "c", "e", "f"]
    var cc = arr1.slice(1,2)//b
    
    

    关于数组面试题

    // 完成以下代码段,实现b数组对a数组的拷贝
    var arr = [1, "yes", 3],
    b;
                    
    // 1.数组遍历,push
    b = new Array();
    for(var i=0; i<=arr.length;i++){
        b.push(a[i]);
    }
    console.log(b);
    
    //2.concat()
    b = [].concat(a)
    console.log(b)
    
    //3.slice()
    b = a.slice(0);
    console.log(b)
    

    数组中splice()方法删除数组项,插入数组项,替换数组项
    语法:
    arrayObject.splice(index,count)
    功能:
    删除从index处开始的零个或多个元素
    返回值:
    含有被删除的元素的数组
    count是要删除的项目数量,如果设置为0,则不会删除项目
    如果不这只,则删除从index开始的所有值

    var arr = ["a", "b","c","d", "e", "f"];
    console.log(arr);
    var delarr = arr.splice(2,2)//从索引2开始删除2个数值
    var darr = arr.splice(2,0)//不删除
    var a = arr.splice(2)
    console.log(delarr);//["c", "d"]
    console.log(darr)//[]
    console.log(a)//["c", "d", "e", "f"] 表示删除从2开始的所有数值
    

    arrayObject.splice(index,0,item1,...,itemx)
    功能:
    在指定位置插入值
    参数:
    Index:起始位置
    0:要删除的项数
    item1,...itemx:要插入的项
    返回值:数组

    需求是在b的位置插入 m,n
    var arr = ["a", "b","c","d", "e", "f"];
    console.log(arr); // ["a", "b", "c", "d", "e", "f"]
    var insertArr=arr.splice(2,0, "m", "n");
    console.log(insertArr); //[]
    console.log(arr);  //["a", "b", "m", "n", "c", "d", "e", "f"]
    由此可以得出,用splice插入元素时,会改变原来的数组,
    在原来的数组中做操作,而不是重新复制一份数组
    

    splice数组替换
    语法:arrayObject.splice(index, count, item1,...,itemx)
    功能:
    在指定位置插入值,且同时删除任意数量的项(元素)
    参数:
    Index:起始位置
    count:要删除的项目(元素的数量)
    返回值:从原来数组中删除的项(元素的数量)如果没有删除任何项,则返回空数组

    需求是把b,c换成x,y
    var arr = ["a", "b", "c", "d"];
    console.log(arr);//["a", "b", "c", "d"]
    var replacearr = arr.splice(1,2,"x","y");
    console.log(replacearr);//["b", "c"]
    console.log(arr)//["a", "x", "y", "d"]
    

    indexof()
    lastindexof()
    为数组实例添加
    语法:
    arrayObject.indexOf(searchvalue, startindex)
    功能:
    从数组的开头开始(位置0)开始向后查找
    参数:
    searchvalue:必须,要查找的项, 不写startIndex的话默认是从零开始查找的,
    startIndex:可选,起点位置的索引,就是从哪里开始查找
    返回值:
    number,查找的项在数组中的位置,没有找到的情况下返回-1

    var nums = [1,2,3,4,5,6,8,9,10];
    var p = nums.indexOf(6);//索引从零开始,6的索引正好是5
    var pos = nums.indexOf(66);
    console.log(p);
    console.log(pos)//nums数组中没有66,返回-1
    
    

    lastindexof是从末尾开始查找的不是开头
    lastindexof()
    为数组实例添加
    语法:
    arrayObject.indexOf(searchvalue, startindex)
    功能:
    从数组的开头开始(位置0)开始向后查找
    参数:
    searchvalue:必须,要查找的项, 不写startIndex的话默认是从零开始查找的,
    startIndex:可选,起点位置的索引,就是从哪里开始查找
    返回值:
    number,查找的项在数组中的位置,没有找到的情况下返回-1

    新增数组元素的时候跟python新增字典很像
    
     2. 新增数组元素 修改索引号 追加数组元素
            var arr1 = ['red', 'green', 'blue'];
            arr1[3] = 'pink';
            console.log(arr1);
            arr1[4] = 'hotpink';
            console.log(arr1);
            arr1[0] = 'yellow'; // 这里是替换原来的数组元素
            console.log(arr1);

    相关文章

      网友评论

          本文标题:JS数组

          本文链接:https://www.haomeiwen.com/subject/ooxbyqtx.html