题目描述
删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组
示例1
输入
[1, 2, 3, 4]
输出
[2, 3, 4]
// slice() 从已有的数组中返回选定的元素。
// 请注意,该方法并不会修改数组,而是返回一个子数组。
function curtail(arr) {
//复制数组arr
var a = arr.slice(0);
a.shift();
return a;
}
// -------------------------------------
// 上面方法的精简版
function curtail(arr) {
return arr.slice(1);
}
// ---------------------------------------------------------
//普通的迭代拷贝
function curtail(arr) {
var newArr=[];
for(var i=1;i<arr.length;i++){
newArr.push(arr[i]);
}
return newArr;
}
// ----------------------------------------------------------
// 利用filter
// 数组对象的filter()方法,接受一个回调函数,在回调函数里是一些逻辑。并最终将原数组中所要满足该逻辑的元素生成一个新的数组。
// filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
// 注意: filter() 不会对空数组进行检测。
// 注意: filter() 不会改变原始数组。
function curtail(arr) {
return arr.filter(function(v,i) {
return i!==0;
});
}
/*
* arr.filter()
*
* @param {String} currentValue - 必须。当前元素的值
* @param {Number} index - 可选。当期元素的索引值
* @param {Array} arr - 可选。当期元素属于的数组对象
*/
array.filter(function(currentValue, index, arr), thisValue)
// ---------------------------------------------------------
//利用push.apply+shift
function curtail(arr) {
var newArr=[];
[].push.apply(newArr, arr);
newArr.shift();
return newArr;
}
//利用join+split+shift 注意!!!:数据类型会变成字符型
function curtail(arr) {
var newArr = arr.join().split(',');
newArr.shift();
return newArr;
}
//利用concat+shift
function curtail(arr) {
var newArr = arr.concat();
newArr.shift();
return newArr;
}