题目要求:
删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组。
输入:
[1,2,3,4]
输出:
[1,2,3]
当然首先想到的是pop(),删除数组最后一项改变数组长度。
这是第0中解决方案你说行不行啊!
function truncate(arr) {
var m = arr.slice();
m.pop();
return m;
}
function truncate(arr) {
var newArr = [];
[].push.apply(newArr,arr); //利用apply将数组拆分为参数列进行数组合并
newArr.pop();
return newArr;
}
//利用join+split+pop 注意!!!:数据类型会变成字符型
function
truncate(arr) {
var
newArr = arr.join().split(
','
); //join后再拆分为新数组
newArr.pop();
return
newArr;
}
//利用concat+pop
function
truncate(arr) {
var
newArr = arr.concat(); //合并数组生成新数组
newArr.pop();
return
newArr;
}
第一种::
很简单的解决方案,声明一个新数组,循环遍历到原数组的倒数第二项push进新数组,返回新数组
function truncate(arr) {
var m = [];
for(var i = 0; i < arr.length - 1; i++){
m.push(arr[i]);
}
return m;
}
第二种::
利用splice()的删除、增加、替换功能
function truncate(arr) {
var m = arr.slice(0);
m.splice(m.length-1,1);
return m;
}
第三种:
利用slice()浅克隆,进行复制到末端的元素
function
truncate(arr) {
return
arr.slice(0,-1);
}
第四种::
哇塞,filter不止能够对比ele的单个值,对不符合的idx下标也可以做出对比返回是否保留相应的元素
function truncate(arr) {
return arr.filter(function(ele,idx,arr){
return arr.length - 1 !== idx;
});
}