題目描述
刪除數組 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 }
來源:牛客網