删除数组末尾元素

题目描述

删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组。

 

第一种方法(concat  +  splice):

1 function truncate(arr) {
2     var newArr = arr.concat();//concat(item)连接生成新数组,无item则是浅复制
3     newArr.splice(arr.length-1,1);//splice第一个参数为要删除的起始位置,第二个参数为删除的个数
4     return newArr;
5 }

 

第二种方法(concat  +  pop):

1 function truncate(arr) {
2     var newArr = arr.concat();
3     newArr.pop();//pop()返回的是数组末尾元素
4     return newArr;
5 }

 

第三种方法( filter ):

1 function truncate(arr) {
2     //filter利用指定函数确定是否在返回的数组中包含某一项
3     var newArr = arr.filter(function(item,index,arr){  
4         return index != arr.length-1; 
5     });
6     return newArr;
7 }

 

第四种方法(join + split + pop):

 1 function truncate(arr) {
 2     /*join(元素) 方法用于把数组中的所有元素放入一个字符串。
 3      元素是通过指定的分隔符进行分隔的。
 4      如:
 5      arr.join() 返回 1,2,3
 6      arr.join('/') 返回 1/2/3 
 7      
 8      split(元素)指定分隔符,返回新数组
 9      */
10     var newArr = arr.join().split(',');
11     newArr.pop();
12     return newArr;
13 }

 

第五种方法(apply  +  pop):

1 function truncate(arr) {
2     /*
3     apply(thisObj,[argArray]) :应用某一对象的一个方法,用另一个对象替换当前对象。实际上是改变函数体内 this 的值 
4     */
5     var newArr = [];
6     [].push.apply(newArr , arr);
7     newArr.pop();
8     return newArr;
9 }

 

第六种方法(for循环赋值):

1 function truncate(arr) {
2     var newArr = new Array();
3     for(var i = 0; i<arr.length ; i++){
4         newArr[i] = arr[i];
5     }
6     newArr.pop();
7     return newArr;
8 }

 

来源:牛客网

posted on 2018-04-18 19:33  大黑ylx  阅读(4568)  评论(0编辑  收藏  举报