数组常见方法(不包括新增)

.push( ):在数组的末尾添加元素,返回长度

var arr = [1,2,3];
console.log(arr.push("hello"));  //4
console.log(arr);                //[1,2,3,"hello"]---原数组改变
console.log(arr.push("a","b"));  //6
console.log(arr);                //[1,2,3,"hello","a","b"]---原数组改变

.unshift( ):在第一位新增一或多个数据,返回长度


.pop( ):删除最后一位元素,并返回删除的数据

var arr = [1,2,3];
console.log(arr.pop());     //3
console.log(arr);           //[1,2]---原数组改变

.shift( ):删除第一位,并返回删除的数据

var arr = [1,2,3]
console.log(arr.shift());       //1
console.log(arr);               //[2,3]---原数组改变

.splice( m , n , a, ……):

替换:从第m个项目开始删除,一共删除n个;a可选,表示在删除的位置添加新元素a

var arr = [34,64,"hello",true,undefined];
console.log(arr.splice(2,2,"html"));    // Array [ "hello", true ]
    console.log(arr);                   // Array(4) [ 34, 64, "html", undefined ]
console.log(arr.splice(2,2));           // Array [ "html", undefined ]
    console.log(arr);                   // Array [ 34, 64 ]
console.log(arr.splice(2,0,"html"));    // Array []
    console.log(arr);                   // Array(3) [ 34, 64, "html" ]
console.log(arr.splice(2,2,"html","css","js"));             // Array [ "html" ]
    console.log(arr);                   // Array(5) [ 34, 64, "html", "css", "js" ]
console.log(arr.splice(2,2,"html","css","js","..."));       // Array [ "html", "css" ]
    console.log(arr);                   // Array(7) [ 34, 64, "html", "css", "js", "...", "js" ]

.concat( ):用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

参数:concat(data1,data2,...);所有参数可选,要合并的数据;data为数组时,将data合并到原数组;data为具体数据时直接添加到原数组尾部;省略时创建原数组的副本。

var arr1 = [1,2,3]
var arr2 = arr1.concat();
console.log(arr1);           //[1,2,3]---原数组
console.log(arr1 === arr2);  //false
console.log(arr2);           //[1,2,3]---原数组的副本

console.log(arr1.concat("hello","world"));           //[1,2,3,"hello","world"]
console.log(arr1.concat(["a","b"],[[3,4],{"name":"admin"}]));   //[1,2,3,"a","b",[3,4],{"name":"admin"}]
console.log(arr1);           //[1,2,3]---原数组未改变
123456789

.join( ):根据指定分隔符将数组中的所有元素放入一个字符串,并返回这个字符串。

join(str);参数可选,默认为","号,以传入的字符作为分隔符。

var arr = [1,2,3];
console.log(arr.join());         //1,2,3
console.log(arr.join("-"));      //1-2-3
console.log(arr);                //[1,2,3]---原数组未改变
1234

.toString( )

功能:转换成字符串,类似于没有参数的join()。该方法会在数据发生隐式类型转换时被自动调用,如果手动调用,就是直接转为字符串。

var arr = [1,2,3];
console.log(arr.toString());     //1,2,3
console.log(arr);                //[1,2,3]---原数组未改变

.sort( )

默认会按照字符的排序规则,升序

   需要传入回调函数,在回调函数身上右接收两个参数,返回这两个参数的差,可以按照数值的排序规则进行排序
    // 当数组内的元素为字符型数字,默认排序已经无法满足,需要手动处理;
    // 如function fn(n,m){return n-m}
    
    
    arr.sort(function(n,m){
        return n-m;
    });

.slice( m , n ) :返回一个新数组,从下标m的位置取到下标n位置的前一个(不包含n),可以实现截取的功能

var arr = [34,"a",67,"b","vc","html","hello"];
console.log(arr);       // Array(7) [ 34, "a", 67, "b", "vc", "html", "hello" ]
// slice:截取,从第一个参数位,截取到第二个参数位的前一个
var a = arr.slice(2,6);     // Array(4) [ 67, "b", "vc", "html" ]
console.log(a);

slice不会改变原数组
  1.那么哪些方法会改变原数组? 因为slice没有改变原数组,索引,要想看到slice的执行结果,得找返回值,
  2.改变了原数组的方法,有没有返回值呢?是什么呢?

  功能:执行就可以看到结果,不需要有返回值
  处理数据:执行不一定能看到结果,需要有返回值

原文地址:https://www.cnblogs.com/wufenfen/p/11772011.html