題目描述:
實(shí)現(xiàn)原生 splice() 方法映企,其它的數(shù)組方法可以用悟狱。
背景介紹:
因?yàn)閭€(gè)人原因,今天沒在學(xué)校堰氓,電話面試的時(shí)候我沒有帶電腦挤渐,只是記得自己實(shí)現(xiàn)過這個(gè)方法,最后描述了很多双絮,面試官還是很難理解我的思路浴麻,就去我的簡(jiǎn)書看我文章得问。(http://www.reibang.com/p/f2c548ccfca8),但是時(shí)間有點(diǎn)久了,我自己對(duì)邏輯也有點(diǎn)模糊了软免,也時(shí)間復(fù)雜度都沒能一下子想到宫纬,有點(diǎn)慚愧,最后面試官點(diǎn)撥了我一下膏萧,用數(shù)組連接的方法漓骚,我大概說了一下我的思路,現(xiàn)在回到學(xué)校向抢,完善了代碼(真的比我之前的方法好很多)认境。
Array.prototype.ssplit = function () {
if (arguments.length === 2) {
return this.slice(0, arguments[0])
} else {
var arr1 = this.slice(0, arguments[0]);
var arr2 = this.slice(arguments[arguments[0] + arguments[1], this.length]);
var arr3 = [];
for (var i = 2; i < arguments.length; i++) {
arr3.push(arguments[i]);
}
return arr1.concat(arr2.concat(arr3))
}
};
var arr = [1, 2, 3];
console.log(arr.ssplit(1, 2, 5, 6, 7, 8)) //[ 1, 5, 6, 7, 8 ]
補(bǔ)充:
最后面試官問了我,arguments 的數(shù)據(jù)類型挟鸠,我也不知道我在哪看到的文章叉信,反正記憶力,就是空的時(shí)候艘希,數(shù)據(jù)類型是 undefined硼身,一個(gè)參數(shù)的時(shí)候是 number,其它都是 array覆享,回來試了一下佳遂,發(fā)現(xiàn)真是錯(cuò)的離譜:
Array.prototype.ssplit = function () {
return arguments
};
var arr = [1, 2, 3];
console.log(arr.ssplit()) //{}
console.log(arr.ssplit(1)) //{ '0': 1 }
console.log(arr.ssplit(1,2,3,4,5)) //{ '0': 1, '1': 2, '2': 3, '3': 4, '4': 5 }
謹(jǐn)記啊:
實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)撒顿!
溫故而知新丑罪!