zoukankan      html  css  js  c++  java
  • 关于js中操作数组的一些方法

    1.锁定数组的长度(让数组的长度变成只读)。

    var a = [1,2,3]  //定义一个数组
    Object.defineProperty(a,"length",{ writable:false }) //将a数组的长度属性设为只读
    a.length = 0 //将a的长度改为0
    console.log(a.length); //打印a数组的长度,还是3

      

    2.Array.join()方法,返回一个字符串

    var a = [1,2,3];
    
    var b = a.join("");
    
    console.log(a); //[1, 2, 3],原数组不改变
    
    console.log(b); //"123",变成字符串
    

      

    3.Array.reverse()方法,返回逆序数组

    var a = [1,2,3];
    
    a.reverse();
    
    console.log(a); //直接改变a数组的值 返回的是[3,2,1]
    

     

    4.Array.sort()方法,返回排序后的数组。如果数组包含undefined,会被排到数组的尾部。如果不带参数的调用sort(),数组元素以字母表顺序排序。

    var a = [2,33,1111,444];
    			
    a.sort()
    			
    console.log(a); //返回的结果是[1111, 2, 33, 444]
    

      如果要数字从小到大排列:

    var a = [2,33,1111,444];
    			
    a.sort(function (a,b) {
    	return a-b
    })
    			
    console.log(a); //[2, 33, 444, 1111]
    

      反之,如果从大到小排列,return b-a。

    4.Array.concat(),创建并返回一个新数组。

    var a = [1,2,3];
    			
    var b = a.concat(4,5);
    			
    var c = a.concat([4,5]);
    			
    console.log(a); //返回的还是[1,2,3]
    
    console.log(b); //返回[1,2,3,4,5]
    
    console.log(c);  //返回[1,2,3,4,5]
    

      这个方法还可以用来复制数组。

    var a = [1,2,3];
    			
    var b = a.concat();
    					
    console.log(a); //返回[1,2,3]
    
    console.log(b); //返回[1,2,3]
    

      

    5.Array.slice()方法,返回指定数组的片段或者子数组。不会改变原数组

    var a = [1,2,3,4,5];
    a.slice(0,3); //返回[1,2,3] 第一个参数是截取开始的位置(包括),第二个参数是截取结束的位置(不包括) a.slice(3); //返回[4,5] a.slice(1,-1); //返回[2,3,4] 负数表示倒数 console.log(a); //返回[1,2,3,4,5]

      

    6.Array.splice()方法,用来删除或插入元素,会修改原数组!

    var a = [1,2,3,4,5,6,7,8];
    			
    var b = a.splice(1,2); //第一个参数是截取的起始位置(包括),第二个参数是截取的个数,之后的参数就是添加在元数组的新值
    			
    console.log(a); //返回[1, 4, 5, 6, 7, 8]
    			
    console.log(b); //返回[2, 3]
    

      

    7.push()方法与pop()方法

    push()方法在数组的尾部添加一个或者多个元素,并返回数组的新长度。注意的是,改变的是原数组的值,返回的是新数组的长度。

    pop()方法删除数组的最后一个元素,并返回它的删除值。也是改变原数组,返回的是删除的值。

    8.unshift()方法与shift()方法

    unshift()方法类似于push()不同的是,他是在数组头部添加,其他都一样

    shift()方法则类比pop()方法。

    9.toString()和toLocaleString()

    toString()方法将每个元素转化为字符串,类似于不传参的join()方法。

    toLocaleString()方法是toString()的本地化版本。

    10.forEach()方法,从头至尾遍历数组,为每个元素调用指定的函数。

    var a = [1,2,3,4,5];
    			
    var sum = 0;
    			
    a.forEach(function (value) {
    	sum += value
    })
    			
    console.log(sum); //sum = 15
    

      

    11.map()方法

    和forEach()类似,调用数组的每个元素传递给指定函数,并返回一个数组,所以它和forEach()的区别在于,有一个返回值。不修改原数组,返回的数组长度和原数组相同

    var a = [1,2,3,4,5];
    			
    var b = a.map(function (value) {
    	return value+1
    })
    			
    console.log(b); //返回[2,3,4,5,6]
    

      

    12.filter()方法,返回的是调用数组的一个子集。

    var a = [1,2,3,4,5];
    			
    var b = a.filter(function (value) {
    	return value > 3
    })
    			
    console.log(b); //返回[4,5]
    

      注意:如果使用map()方法,返回的是[false, false, false, true, true]

     filter()会跳过稀疏数组中缺少的元素,他的返回数组总是稠密的。所以可以用一下方法来压缩稀疏数组的空缺。

    var a = [1,2,,,5];
    			
    var b = a.filter(function (value) {
    	return true
    })
    			 
    console.log(b); //返回[1,2,5]
    

      

    13.every()和some()

    every()方法是只有数组中所以元素都满足某个条件才会返回true;some()方法是只要有满足条件的值,就返回true。

    以every()方法为例

    var a = [1,2,3,4,5];
    			
    a.every(function (value) {
    	return value < 10
    }) //true
    			
    a.every(function (value) {
    	return value % 2 === 0
    }) //false
    

      

    14.indexOf()和lastIndexOf()

    这两个方法都是用来搜索整个数组中具有给定值的元素,返回找到的第一个元素的索引,如果没找到,则返回-1。

    区别在于indexOf()从头至尾搜索,而后者则是反向搜索。

  • 相关阅读:
    STL源码剖析之_allocate函数
    PAT 1018. Public Bike Management
    PAT 1016. Phone Bills
    PAT 1012. The Best Rank
    PAT 1014. Waiting in Line
    PAT 1026. Table Tennis
    PAT 1017. Queueing at Bank
    STL源码剖析之list的sort函数实现
    吃到鸡蛋好吃,看看是哪只母鸡下的蛋:好用的Sqlite3
    cJSON
  • 原文地址:https://www.cnblogs.com/blogs-8888/p/6518683.html
Copyright © 2011-2022 走看看