1. forEach( )
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> // 首先去除ES5的forEach方法 Array.prototype.forEach = null; Array.prototype.forEach = function(fun) { // 本质就是在函数内部循环 for (var i = 0; i < this.length; i++) { // this[i] 表示成员值 i 表示索引值 this 表示原数组 fun(this[i], i, this) } } var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; //使用forEach 测试 arr.forEach(function(value, index, arr) { console.log(value, index) }) </script> </body> </html>
2. map( )
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> // 移除ES5的map方法 Array.prototype.map = null; // 实现Map方法 Array.prototype.map = function(fun) { // 定义空数组 var arr = []; // 循环每一项 for (var i = 0; i < this.length; i++) { // this[i] 表示 成员值 i 表示索引值 this 原数组 var item = fun(this[i], i, this); // 放入到数组中 arr.push(item); } // 返回数组 return arr; } // 定义数组 var arr = ["a", "b", "c", "d", "e", "f", "g"] // 使用map循环 var result = arr.map(function(value, index, arr) { // console.log(value, index) return value + "1" }) console.log(result) </script> </body> </html>
3. fill( )
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> // 移除ES5的fill方法 Array.prototype.fill = null; // 实现fill方法 Array.prototype.fill = function(item) { // 循环 for (var i = 0; i < this.length; i++) { // 将每一个成员设置为传递的参数 this[i] = item; } // 返回this return this; } // 定义数组 var arr = ["a", "b", "c", "d", "e", "f", "g"] // 测试 var result = arr.fill(1).fill(2).fill(3); console.log(result) </script> </body> </html>
4. some( )
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> // 移除ES5的some方法 Array.prototype.some = null; Array.prototype.some = function(fun) { // 循环每一个成员 for (var i = 0; i < this.length; i++) { // 判断 if (fun(this[i], i, this)) { // 如果有一个成员满足条件就返回true return true; } } // 如果都不满足条件 才返回false return false } // 定义数组 var arr = ["a", "b", "c", "d", "e", "f", "g", 123] var result = arr.some(function(value, index, arr) { return typeof value === "number" }) console.log(result) </script> </body> </html>
5. every( )
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> // 移除ES5的every方法 Array.prototype.every = null; // 实现every方法 Array.prototype.every = function(fun) { // 循环每一个成员 for (var i = 0; i < this.length; i++) { // 判断 if (!fun(this[i], i, this)) { // 如果有一个成员不满足条件就返回false return false; } } // 如果都满足条件,就返回true return true; } // 定义数组 var arr = ["a", "b", "c", "d", "e", "f", "g", 123] var result = arr.every(function(value, index, arr) { return typeof value === "string" }) console.log(result) </script> </body> </html>
6. filter( )
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> // 实现filter方法 Array.prototype.filter = null; Array.prototype.filter = function(fun) { // 定义空数组 var arr = []; // 遍历每个成员 for (var i = 0; i < this.length; i++) { // 判断 if (fun(this[i], i, this)) { // 如果满足条件就进入数组 arr.push(this[i]) } } // 返回数组 return arr } // 定义数组 var arr = ["a", "b", "c", "d", 1, 2, 3, 4, 5]; var result1 = arr.filter(function(value, index, arr) { return typeof value === "number" }) console.log(result1) </script> </body> </html>
7. reduce( )
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> // 移除ES5的reduce方法 Array.prototype.reduce = null; // 实现reduce 方法 Array.prototype.reduce = function(fun) { // 用于中专的值 var result = this[0] // 循环每一个成员 因为redece 要从第二个成员开始遍历,所以i要从1开始 for (var i = 1; i < this.length; i++) { result = fun(result, this[i], i, this) } // 返回result return result } // 定义数组 var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9] // 求相加的结果 var result = arr.reduce(function(pre, value, index, arr) { return pre + value; }) console.log(result) </script> </body> </html>
8. reduceRight( )
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> // 移除ES5的reduceRight方法 // Array.prototype.reduceRight = null; // 实现reduceRight 方法 Array.prototype.reduceRight = function(fun) { // 定义变量用于中专 var result = this[this.length - 1]; // 循环每一个成员 // // 因为reduceRight的特殊性 要特意少循环一次 不可以从this.length - 1开始循环 for (var i = this.length - 2; i >= 0; i--) { var result = fun(result, this[i], i , this) } // 返回result return result; } // 定义数组 var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9] // 求相加的结果 var result = arr.reduceRight(function(pre, value, index, arr) { return pre + value; }) console.log(result) </script> </body> </html>