一、创建数组
1.1 使用Array构造函数
var arr1 = new Array(); // 创建一个空数组var arr2 = new Array(10); // 创建一个包含20项的数组var arr3 = new Array('liu', 'wang', 'li'); // 创建一个包含3个字符串的数组
1.2 使用数组字面量表示法
var arr1 = []; // 创建一个空数组var arr2 = [10]; // 创建一个包含1项的数组var arr3 = ['liu', 'wang', 'li']; // 创建一个包含3个字符串的数组
二、常用数组方法
方法名 | 描述 |
---|---|
join | 把数组的所有元素放入一个字符串,元素通过指定的分隔符进行分隔 |
pop | 删除并返回数组的最后一个元素 |
push | 向数组的末尾添加一个或更多元素,并返回新的长度 |
shift | 删除并返回数组的第一个元素 |
unshift | 向数组的开头添加一个或更多元素,并返回新的长度 |
slice | 从某个已有的数组返回指定的元素 |
indexOf | 返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1 |
lastIndexOf | 返回在数组中搜索到的与给定参数相等的元素的索引里的最大的值,没有找到则返回-1 |
sort | 对数组的元素进行排序 |
splice | 删除元素,并向数组添加新元素 |
toString | 把数组转换为字符串,并返回结果 |
toLocaleString | 把数组转换为本地字符串,并返回结果 |
valueOf | 返回数组对象的原始值 |
forEach | 对数组中的每一项运行指定函数,这个方法没有返回值 |
concat | 连接2个或更多数组,并返回结果 |
every | 对数组中的每一项运行指定函数,如果该函数对每一项都返回true,则返回true |
some | 对数组中的每一项运行指定函数,如果任一项返回true,则返回true |
filter | 对数组中的每一项运行指定函数,返回该函数会返回true的项组成的数组 |
reverse | 颠倒数组中元素的顺序 |
map | 对数组中的每一项运行指定函数,返回每次函数调用的结果组成的数组 |
reduce | 接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值 |
reduceRight | 接收一个函数作为累加器,数组中的每个值(从右到左)开始缩减,最终计算为一个值 |
PS:原始值是指固定而简单的值,存放在栈中的简单数据段,它们的值直接存储在变量访问的位置。
JavaScript中有五种原始类型,也叫基本类型:
Number、String、Boolean、Undefined、Null
三、演示实例
3.1 join
定义和用法
join()方法用于把数组中的所有元素放入一个字符串。
元素是通过指定的分隔符进行分隔的。
语法
arrayObject.join(separator)
参数 | 描述 |
---|---|
seperator | 可选。指定要使用的分隔符,如果省略该参数,则使用逗号作为分隔符 |
返回值
返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。
var arr = new Array(3); arr[0] = "Geroge"; arr[1] = "John"; arr[2] = "Thomas";var str1 = arr.join();var str2 = arr.join('');var str3 = arr.join(' ');var str4 = arr.join('-');console.log(str1); // "Geroge,John,Thomas"console.log(str2); // "GerogeJohnThomas"console.log(str3); // "Geroge John Thomas"console.log(str4); // "Geroge-John-Thomas"
3.2 pop
定义和用法
pop()方法用于删除并返回数组的最后一个元素。
语法
arrayObject.pop()
返回值
arrayObject 的最后一个元素。
说明
pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。
var arr = new Array(3); arr[0] = "Geroge"; arr[1] = "John"; arr[2] = "Thomas"; console.log(arr); // ["Geroge", "John", "Thomas"] console.log(arr.pop()); // "Thomas"console.log(arr); // ["Geroge", "Thomas"]
3.3 push
定义和用法
push()方法可向数组的末尾添加一个或多个元素,并返回新的长度。
语法
arrayObject.push(newElement1, newElement2, ..., newElementX)
参数 | 描述 |
---|---|
newElement1 | 必需。要添加到数组末尾的第一个元素 |
newElement2 | 可选。要添加到数组末尾的第二个元素 |
newElementX | 可选。可添加多个元素 |
返回值
把指定的值添加到数组后的新长度。
说明
push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。
var arr = new Array(3); arr[0] = "Geroge"; arr[1] = "John"; arr[2] = "Thomas"; console.log(arr); // ["Geroge", "John", "Thomas"] console.log(arr.push("James")); // 4console.log(arr); // ["Geroge", "John", "Thomas", "James"] console.log(arr.push("Peter", "Sara")); // 6console.log(arr); // ["Geroge", "John", "Thomas", "James", "Peter", "Sara"]
3.4 shift
定义和用法
shift()方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
语法
arrayObject.shift()
返回值
数组原来的第一个元素的值。
说明
如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject。
var arr = new Array(3); arr[0] = "Geroge"; arr[1] = "John"; arr[2] = "Thomas"; console.log(arr); // ["Geroge", "John", "Thomas"] console.log(arr.shift()); // "Geroge"console.log(arr); // ["John", "Thomas"]
3.5 unshift
定义和用法
unshift()方法可向数组的开头添加一个或多个元素,并返回新的长度。
语法
arrayObject.unshift(newElement1, newElement2, ..., newElementX)
参数 | 描述 |
---|---|
newElement1 | 必需。要添加到数组开头的第一个元素 |
newElement2 | 可选。要添加到数组开头的第二个元素 |
newElementX | 可选。可添加多个元素 |
返回值
arrayObject 的新长度。
说明
unshift() 方法将把它的参数插入 arrayObject 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。
请注意,unshift() 方法不创建新的创建,而是直接修改原有的数组。
var arr = new Array(3); arr[0] = "Geroge"; arr[1] = "John"; arr[2] = "Thomas"; console.log(arr); // ["Geroge", "John", "Thomas"] console.log(arr.unshift("James")); // 4console.log(arr); // ["James", "Geroge", "John", "Thomas"] console.log(arr.unshift("Peter", "Sara")); // 6console.log(arr); // ["Peter", "Sara", "James", "Geroge", "John", "Thomas"]
3.6 slice
定义和用法
slice()方法可从已有的数组中返回选定的元素。slice()方法不改变原数组。
语法
arrayObject.slice(start, end)
参数 | 描述 |
---|---|
start | 必需。规定从何处开始选取。 如果是负数,那么它规定从数组尾部开始算起的位置。 也就是说,-1指最后一个元素,-2指倒数第二个元素,以此类推。 |
end | 可选。规定从何处结束选取。 该参数是数组片断结束处的数组下标。 如果没有指定该参数,那么切分的数组包含从start到数组结束的所有元素。 如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。 |
返回值
返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
说明
请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
var arr = new Array(6); arr[0] = "George"; arr[1] = "John"; arr[2] = "Thomas"; arr[3] = "James"; arr[4] = "Adrew"; arr[5] = "Martin"; console.log(arr); // ["Geroge", "John", "Thomas", "James", "Adrew", "Martin"] console.log(arr.slice(0)); // ["Geroge", "John", "Thomas", "James", "Adrew", "Martin"] console.log(arr.slice(1)); // ["John", "Thomas", "James", "Adrew", "Martin"] console.log(arr.slice(1, 3)); // ["John", "Thomas"] console.log(arr.slice(1, -2)); // ["John", "Thomas", "James"] console.log(arr.slice(-1, -2)); // [] console.log(arr.slice(-2, -1)); // ["Adrew"] console.log(arr); // ["Geroge", "John", "Thomas", "James", "Adrew", "Martin"]
3.7 indexOf
定义和用法
indexOf()方法可返回某个指定的值在数组中首次出现的位置。从左往右找,找不到返回-1。
语法
arrayObject.indexOf(searchValue, fromIndex)
参数 | 描述 |
---|---|
searchValue | 必需。规定需检索的值。 |
fromIndex | 可选的整数参数,开始查找的位置。 如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回-1。 如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消, 即-1表示从最后一个元素开始查找,-2表示从倒数第二个元素开始查找 ,以此类推。 注意:如果参数中提供的索引值是一个负值,并不改变其查找顺序, 查找顺序仍然是从前向后查询数组。如果抵消后的索引值仍小于0, 则整个数组都将会被查询。其默认值为0 |
var arr = new Array(6); arr[0] = "George"; arr[1] = "John"; arr[2] = "Thomas"; arr[3] = "James"; arr[4] = "Adrew"; arr[5] = "Martin";console.log(arr.indexOf('Thomas')); // 2console.log(arr.indexOf('Thomas', 2)); // 2console.log(arr.indexOf('Thomas', 3)); // -1console.log(arr.indexOf('Thomas', -4)); // 2console.log(arr.indexOf('Thomas', -3)); // -1console.log(arr.indexOf('Peter')); // -1
3.8 lastIndexOf
定义和用法
lastIndexOf()方法可返回某个指定的值在数组中首次出现的位置。从右往左找,找不到返回-1。
语法
arrayObject.indexOf(searchValue, fromIndex)
参数 | 描述 |
---|---|
searchValue | 必需。规定需检索的值。 |
fromIndex | 可选的整数参数,从此位置开始逆向查找。 默认为数组的长度减 1,即整个数组都被查找。 如果该值大于或等于数组的长度,则整个数组会被查找。 如果为负值,将其视为从数组末尾向前的偏移。 即使该值为负,数组仍然会被从后向前查找。 如果该值为负时,其绝对值大于数组长度,则方法返回 -1,即数组不会被查找 |
var arr = new Array(6); arr[0] = "George"; arr[1] = "John"; arr[2] = "Thomas"; arr[3] = "James"; arr[4] = "Adrew"; arr[5] = "Martin";console.log(arr.lastIndexOf('Thomas')); // 2console.log(arr.lastIndexOf('Thomas', 2)); // 2console.log(arr.lastIndexOf('Thomas', 3)); // 2console.log(arr.lastIndexOf('Thomas', 1)); // -1console.log(arr.lastIndexOf('Thomas', -4)); // 2console.log(arr.lastIndexOf('Thomas', -3)); // 2console.log(arr.lastIndexOf('Peter')); // -1
3.9 sort
定义和用法
sort()方法用于对数组的元素进行排序。
语法
arrayObject.sort(sortby)
参数 | 描述 |
---|---|
sortby | 可选。规定排序顺序。必须是函数。 |
返回值
对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
说明
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说的更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以方便比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数a和b,其返回值如下:
若a小于b,在排序后的数组中a应该出现在b之前,则返回一个小于0的值。
若a等于b,则返回0。
若a大于b,则返回一个大于0的值。
即顺序 return a - b; 倒序 return b - a;
a在b前返回负数,a在b后返回正数
var arr = new Array(6); arr[0] = "10"; arr[1] = "5"; arr[2] = "40"; arr[3] = "25"; arr[4] = "1000"; arr[5] = "1"; console.log(arr); // ["10", "5", "40", "25", "1000", "1"] console.log(arr.sort()); // ["1", "10", "1000", "25", "40", "5"] console.log(arr); // ["1", "10", "1000", "25", "40", "5"]
var arr = new Array(6); arr[0] = "10"; arr[1] = "5"; arr[2] = "40"; arr[3] = "25"; arr[4] = "1000"; arr[5] = "1";function orderNumber (a, b) { return a - b; }function descOrderNumber (a, b) { return b - a; } console.log(arr); // ["10", "5", "40", "25", "1000", "1"] console.log(arr.sort(orderNumber)); // ["1", "5", "10", "25", "40", "1000"] console.log(arr.sort(descOrderNumber)); // ["1000", "40", "25", "10", "5", "1"] console.log(arr); // ["1000", "40", "25", "10", "5", "1"]
3.10 splice
定义和用法
splice()方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。
语法
arrayObject.splice(index, howmany, item1, ......, itemX)
参数 | 描述 |
---|---|
index | 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 |
howmany | 必需。要删除的项目数量。如果设置为0,则不会删除项目。 |
item1,......,itemX | 可选。向数组添加的新项目。 |
返回值
类型 | 描述 |
---|---|
Array | 包含被删除项目的新数组,如果有的话。 |
说明
splice()方法可删除从index处开始的0个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。如果从arrayObject中删除了元素,则返回的是含有被删除的元素的数组。
var arr = new Array(6); arr[0] = "George"; arr[1] = "John"; arr[2] = "Thomas"; arr[3] = "James"; arr[4] = "Adrew"; arr[5] = "Martin"; console.log(arr); // ["Geroge", "John", "Thomas", "James", "Adrew", "Martin"] console.log(arr.splice(1, 1, 'Peter', 'Sara')); // ["John"] console.log(arr); // ["Geroge", "Peter", "Sara", "Thomas", "James", "Adrew", "Martin"] console.log(arr.splice(1, 0, 'Ella')); // [] console.log(arr); // ["Geroge", "Ella", "Peter", "Sara", "Thomas", "James", "Adrew", "Martin"]
3.11 toString
定义和用法
toString()方法可把数组转换为字符串,并返回结果。
语法
arrayObject.toString()
返回值
arrayObject的字符串表示。返回值与没有参数的join()方法返回的字符串相同。
说明
当数组用于字符串环境时,JavaScript会调用这一方法将数组自动转换成字符串。但是在某些情况下,需要显式地调用该方法。
var arr = new Array(4); arr[0] = "Geroge"; arr[1] = "John"; arr[2] = "Thomas"; arr[3] = 20; console.log(arr.toString()); // "Geroge,John,Thomas,20"
3.12 toLocaleString
定义和用法
toLocaleString()方法可把数组转换为本地字符串,并返回结果。
语法
arrayObject.toLocaleString()
返回值
arrayObject的本地字符串表示。
说明
首先调用每个数组元素的 toLocaleString() 方法,然后使用地区特定的分隔符把生成的字符串连接起来,形成一个字符串。
var arr = new Array(4); arr[0] = "Geroge"; arr[1] = "John"; arr[2] = "Thomas"; arr[3] = 20; console.log(arr.toLocaleString()); // "Geroge,John,Thomas,20"
3.13 valueOf
定义和用法
valueOf()方法返回Array对象的原始值。该原始值由Array对象派生的所有对象继承。valueOf()方法通常由JavaScript在后台自动调用,并不显式地出现在代码中。
语法
arrayObject.valueOf()
var arr = new Array(4); arr[0] = "Geroge"; arr[1] = "John"; arr[2] = "Thomas"; arr[3] = 20; console.log(arr.valueOf()); // ["Geroge", "John", "Thomas", 20]
3.14 forEach
定义和用法
forEach()方法用于调用数组的每个元素,并将元素传递给回调函数。forEach()对于空数组是不会执行回调函数的。
语法
arrayObject.forEach(function (value, index, arr) {}, thisValue)
参数 | 描述 |
---|---|
function(currentValue, index, arr) | 必需。数组中每个元素需要调用的函数。 currentValue: 必需。当前元素。 index: 可选。当前元素的索引值。 arr: 可选。当前元素所属的数组对象。 |
thisValue | 可选。传递给函数的值一般用'this'值。 如果这个参数为空,严格模式下把'undefined'会传递给'this'值,普通模式下传入'window'。 |
var arr = new Array(3); arr[0] = "Geroge"; arr[1] = "John"; arr[2] = "Thomas"; arr.forEach(function (value, index, arr) { console.log(value); // "Geroge" "John" "Thomas" console.log(index); // 0 1 2 console.log(arr); // ["Geroge", "John", "Thomas"] console.log(this); // window }); arr.forEach(function (value, index, arr) { console.log(value); // "Geroge" "John" "Thomas" console.log(index); // 0 1 2 console.log(arr); // ["Geroge", "John", "Thomas"] console.log(this); // ["Geroge", "John", "Thomas"] }, arr);
3.15 concat
定义和用法
concat()方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法
arrayObject.concat(arrayX,arrayX,......,arrayX)
参数 | 描述 |
---|---|
arrayX | 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。 |
返回值
返回一个新的数组。该数组是通过把所有arrayX参数添加到arrayObject中生成的。如果要进行concat()操作的参数是数组,那么添加的是数组中的元素,而不是数组。
var a = [1, 2, 3]; console.log(a.concat(4, 5, [6, 7], 8, 9)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
3.16 every
定义和用法
every()方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every()方法使用指定函数检测数组中的所有元素:
如果数组中检测到有一个元素不满足,则整个表达式返回false,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回true。
注意:every()不会对空数组进行检测。
注意:every()不会改变原始数组。
语法
arrayObject.every(function (currentValue, index, arr) {}, thisValue)
参数 | 描述 |
---|---|
function (currentValue, index, arr) | 必需。函数,数组中的每个元素都会执行这个函数。 currentValue: 必需。当前元素。 index: 可选。当前元素的索引值。 arr: 可选。当前元素所属的数组对象。 |
thisValue | 可选。对象作为该执行回调时使用,传递给函数。 |
说明
有一个返回false,则整个every()返回值为false,并且不会执行后续其他项的回调函数。
空数组的every()直接返回true。
var ages = [10, 20, 24, 32, 40];var result = ages.every(function (value, index, arr) { return value > 25; });console.log(result); // falseages = [];result = ages.every(function (value, index, arr) { return value > 25; });console.log(result); // true
3.17 some
定义和用法
some()方法用于检测数组所有元素是否满足指定条件(通过函数提供)。
every()方法会依次执行数组的每个元素:
如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
注意:some()不会对空数组进行检测。
注意:some()不会改变原始数组。
语法
arrayObject.some(function (currentValue, index, arr) {}, thisValue)
参数 | 描述 |
---|---|
function (currentValue, index, arr) | 必需。函数,数组中的每个元素都会执行这个函数。 currentValue: 必需。当前元素。 index: 可选。当前元素的索引值。 arr: 可选。当前元素所属的数组对象。 |
thisValue | 可选。对象作为该执行回调时使用,传递给函数。 |
说明
有一个返回true,则整个some()返回值为true,并且不会执行后续其他项的回调函数。
空数组的some()直接返回false。
var ages = [10, 20, 24, 32, 40];var result = ages.some(function (value, index, arr) { return value > 25; });console.log(result); // trueages = [];result = ages.some(function (value, index, arr) { return value > 25; });console.log(result); // false
3.18 filter
定义和用法
filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意:filter()不会对空数组进行检测。
注意:filter()不会改变原始数组。
语法
arrayObject.filter(function (currentValue, index, arr) {}, thisValue)
参数 | 描述 |
---|---|
function (currentValue, index, arr) | 必需。函数,数组中的每个元素都会执行这个函数。 currentValue: 必需。当前元素。 index: 可选。当前元素的索引值。 arr: 可选。当前元素所属的数组对象。 |
thisValue | 可选。对象作为该执行回调时使用,传递给函数。 |
说明
将所有返回true的数组项取出来组成一个新的数组。
var ages = [10, 20, 24, 32, 40];var result = ages.filter(function (value, index, arr) { return value > 25; });console.log(result); // [32, 40]console.log(ages); // [10, 20, 24, 32, 40]ages = [];result = ages.filter(function (value, index, arr) { return value > 25; });console.log(result); // []
3.19 reverse
定义和用法
reverse()方法用于颠倒数组中元素的顺序。会改变原数组。
语法
arrayObject.reverse()
var arr = new Array(3); arr[0] = "George"; arr[1] = "John"; arr[2] = "Thomas"; console.log(arr); // ["Geroge", "John", "Thomas"] console.log(arr.reverse()); // ["Thomas", "John", "Geroge"] console.log(arr); // ["Thomas", "John", "Geroge"]
3.20 map
定义和用法
map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。map()方法按照原始数组元素顺序依次处理元素。
注意:map()不会对空数组进行检测。
注意:map()不会改变原始数组。
语法
arrayObject.map(function (currentValue, index, arr) {}, thisValue)
参数 | 描述 |
---|---|
function (currentValue, index, arr) | 必需。函数,数组中的每个元素都会执行这个函数。 currentValue: 必需。当前元素。 index: 可选。当前元素的索引值。 arr: 可选。当前元素所属的数组对象。 |
thisValue | 可选。对象作为该执行回调时使用,传递给函数。 |
var numbers = [65, 20, 11, 5];var arr = numbers.map(function (value, index, arr) { return value * 2; })console.log(numbers); // [65, 20, 11, 5]console.log(arr); // [130, 40, 22, 10]
3.21 reduce
定义和用法
reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
注意:reduce()对于空数组是不会执行回调函数的。
语法
arrayObject.reduce(function (total, currentValue, currentIndex, arr) {}, initialValue)
参数 | 描述 |
---|---|
function (total, currentValue, currentIndex, arr) | 必需。函数,数组中的每个元素都会执行这个函数。 total: 必需。初始值,或者计算结束后的返回值。 currentValue: 必需。当前元素。 currentIndex: 可选。当前元素的索引。 arr: 可选。当前元素所属的数组对象。 |
initialValue | 可选。传递给函数的初始值。 |
var numbers = [15, 2, 1, 7];var total = numbers.reduce(function (total, currentValue) { console.log(total); // 15 17 18 25 console.log(currentValue); // 2 1 7 return total + currentValue; }); console.log(total); // 25console.log(numbers); // [15, 2, 1, 7]total = numbers.reduce(function (total, currentValue) { console.log(total); // 20 35 37 38 45 console.log(currentValue); // 15 2 1 7 return total + currentValue; }, 20); console.log(total); // 45console.log(numbers); // [15, 2, 1, 7]
3.22 reduceRight
定义和用法
reduceRight()方法的功能和reduce()功能是一样的,不同的是reduceRight()从数组的末尾向前将数组中的数组项做累加。
注意:reduceRight()对于空数组是不会执行回调函数的。
语法
arrayObject.reduceRight(function (total, currentValue, currentIndex, arr) {}, initialValue)
参数 | 描述 |
---|---|
function (total, currentValue, currentIndex, arr) | 必需。函数,数组中的每个元素都会执行这个函数。 total: 必需。初始值,或者计算结束后的返回值。 currentValue: 必需。当前元素。 currentIndex: 可选。当前元素的索引。 arr: 可选。当前元素所属的数组对象。 |
initialValue | 可选。传递给函数的初始值。 |
var numbers = [15, 2, 1, 7];var total = numbers.reduceRight(function (total, currentValue) { console.log(total); // 7 8 10 25 console.log(currentValue); // 1 2 15 return total + currentValue; }); console.log(total); // 25console.log(numbers); // [15, 2, 1, 7]total = numbers.reduceRight(function (total, currentValue) { console.log(total); // 20 27 28 30 45 console.log(currentValue); // 7 1 2 15 return total + currentValue; }, 20); console.log(total); // 45console.log(numbers); // [15, 2, 1, 7]
三、结束
本文会同步到我的个人博客,完整代码可以到我的github仓库查看,如果对你有帮助的话欢迎点一个Star~~
原文链接:https://segmentfault.com/a/1190000015765638
原文作者:liuxuan