第一次在博客園寫文章,之前一直自己做記錄。現在前端工作兩年了,對前端整體技術有較清晰的了解。項目用了vue,react之類的寫,如今打算從基礎開始,慢慢深入了解原生的JS.這幾天清明節,玩的嗨皮,最后一次開始趕作業(我規定自己每天至少一個Js題,在網上隨機找的。*~*)
今天主要是重寫了數組的remove(),concat()方法以及查找數組中對應元素。下面做一個簡單分享:
1.重寫remove()方法,返回新數組
function remove(arr, item) {
var arry=[]
for(var i=0;i<arr.length;i++){
if(arr[i]!=item){
arry.push(arr[i])
}
}
return arry
}
2.移除數組 arr 中的所有值與 item 相等的元素,直接在給定的 arr 數組上進行操作,並將結果返回
function removeWithoutCopy(arr, item) {
for(var i=0;i<arr.length;i++){
if(arr[i]==item){
arr.splice(i,1);
i--;
arr.length--;
}
}
return arr
}
注:這里要i--;arr.length--;是因為在給定的數組中操作的。splice每次移除都會改變arr的長度。
3.在數組 arr 末尾添加元素 item。不要直接修改數組 arr,結果返回新的數組
function append(arr, item) {
Array.prototype.clone=function(){
return this.slice(0)
}
var arry=arr.clone();
arry.push(item);
return arry
}
注:這里我特意給數組的原型加了一個克隆方法是方法初學者理解。因為直接給數組賦值如:var arry=arr;是賦值引用,
當我改變arry時,arr源會跟着改變,所以我選擇克隆一個新數組。
4.數組的合並,不能在原有數組上修改。
function concat(arr1,arr2) {
var arry=arr1.slice(0);
for(var i=0;i<arr2.length;i++){
arry.push(arr2[i]);
}
return arry;
}
注:這里我也用到了第3題的克隆(截取)方式
下面我再用一組圖簡單介紹一下操作數組用爛了的幾個函數:push(),pop(),unshift(),shift()
好啦,今天就寫到這,歡迎多多指教!