.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.改变了原数组的方法,有没有返回值呢?是什么呢?
功能:执行就可以看到结果,不需要有返回值
处理数据:执行不一定能看到结果,需要有返回值