js陣列原生方法的實現

2021-10-17 19:22:11 字數 2523 閱讀 8687

1、陣列遍歷foreach()

/**

* 自定義foreach

* @param fn 待執行方法

*/function foreach(fn)

}

2、陣列對映map()

/**

* 自定義map

* @param fn 待執行方法

*/function map(fn)

return list

}

3陣列過濾filter()

/**

* 自定義filter

* @param fn 待執行方法

*/function filter(fn)

} return list

}

4、陣列是否包含某元素some()

/**

* some

* @param fn 待執行方法

*/function some(fn)

} return false

}

5、陣列每一項是否都滿足條件every()

/**

* every

* @param fn 待執行方法

*/function every(fn)

} return true

}

6、陣列拼接concat()

/**

* 自定義concat

* @param array 傳入的陣列列表

*/function concat(...array)

// 遞迴push

const recursion = (arg) =>

} else

} recursion(array)

return that

}

7、陣列是否包含元素includes()

/**

* * @param value 查詢的元素值

* @param index 查詢開始的索引,可以為負數

* @return

*/function includes(value, index = 0)

} return false

}

8、查詢滿足條件的第乙個陣列元素find()

/**

* 查詢符合條件的第乙個元素

* @param fn 待執行方法

*/function find(fn)

i++}}

9、查詢滿足條件的第乙個陣列元素的索引findindex()

/**

* 查詢符合條件的第乙個元素的索引

* @param fn 待執行方法

*/function findindex(fn)

i++} return -1

}

10、搜尋陣列元素indexof()

/**

* 搜尋陣列中的元素,返回索引

* @param value 待查詢的元素

*/function indexof(value)

i++} return -1

}

11、 將陣列元素計算為乙個值(從左到右)reduce()

/**

* reduce

* 可以用來陣列求和、求陣列最大數、陣列最小數

*/function reduce(fn)

return current

}// 陣列求和示例

arr.$reduce((a, b) => )

// 陣列最大數

arr.$reduce((a, b) => )

// 陣列最小數

arr.$reduce((a, b) => )

建立完成這些方法,把他們掛載到array上,方便所有陣列物件呼叫 

const functions = 

object.assign(array.prototype, functions) // 把自定義的方法掛載到陣列的原型上,這樣所有陣列都可以呼叫

// 呼叫示例

const arr = [1,2,3]

const newarr = arr.$map(item => )

console.log(newarr) // [2,3,4]

JS陣列方法的原生實現

該方法接受任意個引數,然後新增到陣列的末尾 function push arr,arg push 接受任意個引數,按照順序新增到陣列末尾,返回新的陣列長度 return arr.length 該方法刪除並返回陣列的最後乙個元素,如果陣列為空,返回undefined function pop arr ...

利用原生JS實現陣列原型方法

初始 const istype function type object.prototype.tostring.call t const isarray istype array console.log isarray 簡化後 const istype type t object object.pr...

原生JS實現bind方法

bind方法建立乙個新函式。呼叫新函式時,this指向給定的物件,並且將給定的引數列表作為原函式的引數序列的前若干項。當使用new操作符建立bind函式的例項時,bind函式變成構造器,給定的物件引數失效,其餘引數仍然有效。function mybind function fn 臨時函式protot...