题目:删除数组 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 }
第四种方法(jion + 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 }
原文地址:https://www.cnblogs.com/daheiylx/p/8877099.html
时间: 2024-10-14 01:43:37