// forEach
Array.prototype.forEach = function(fn, context) {
if(Object.prototype.toString.call(fn) !== "[object Function]") {
throw new TypeError(fn + "is not a function");
}
for(let i = 0; i < this.length; i++) {
fn.call(context, this[i], i, this);
}
}
// map
Array.prototype.map = function (func, ctx) {
let len = this.length
if(Object.prototype.toString.call(func) !== "[object Function]") {
throw new TypeError(func + "is not a function")
}
const arr = []
for (let i = 0; i < len; i++) {
arr.push(func.call(ctx, this[i], this))
}
return arr
}
// find
Array.prototype.find = function (func, ctx) {
let len = this.length
if(Object.prototype.toString.call(func) !== "[object Function]") {
throw new TypeError(func + "is not a function")
}
let obj = undefined
for (let i = 0; i < len; i++) {
if (func.call(ctx, this[i], i)) {
obj = this[i]
}
}
return obj
}
// findIndex
Array.prototype.findIndex = function (func, ctx) {
let len = this.length
if(Object.prototype.toString.call(func) !== "[object Function]") {
throw new TypeError(func + "is not a function")
}
let index = undefined
for (let i = 0; i < len; i++) {
if (func.call(ctx, this[i], i)) {
index = i
}
}
return index
}
// filter
Array.prototype.filter = function (func, ctx) {
let len = this.length
if(Object.prototype.toString.call(func) !== "[object Function]") {
throw new TypeError(func + "is not a function")
}
const arr = []
for (let i = 0; i < len; i++) {
if (func.call(ctx, this[i], i)) {
arr.push(this[i])
}
}
return arr
}
// some
Array.prototype.some = function (func, ctx) {
let len = this.length
if(Object.prototype.toString.call(func) !== "[object Function]") {
throw new TypeError(func + "is not a function")
}
let flag = false
for (let i = 0; i < len; i++) {
if (func.call(ctx, this[i], i)) {
flag = true
}
}
return flag
}
// every
Array.prototype.every = function (func, ctx) {
let len = this.length
if(Object.prototype.toString.call(func) !== "[object Function]") {
throw new TypeError(func + "is not a function")
}
let flag = true
for (let i = 0; i < len; i++) {
if (func.call(ctx, this[i], i)) {
flag = false
}
}
return flag
}
javascript数组方法(find,some,every...)实现
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 数组 一、数组的基本概念[https://gitee.com/xiaozhou_report/xiaozhou_f...
- 数组常用操作方法整理(包含es6)及详细使用。 1. every() 判断数组所有元素是否**全部**符合条件 返...
- 原理部分 JavaScript 在ES6版本后提供了一些更加便捷的方法供开发者使用,实现原理其实是在对应的构造函数...