JavaScript数据结构01 - 数组

1、建立数组

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个字符串的数组
复制代码

2、经常使用数组方法

方法名 描述
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:原始值是指固定而简单的值,存放在栈中的简单数据段,它们的值直接存储在变量访问的位置。git

JavaScript中有五种原始类型,也叫基本类型:
Number、String、Boolean、Undefined、Nullgithub

3、演示实例

3.1 join

定义和用法
数组

join()方法用于把数组中的全部元素放入一个字符串。
元素是经过指定的分隔符进行分隔的。bash

语法
微信

arrayObject.join(separator)函数

参数 描述
seperator 可选。指定要使用的分隔符,若是省略该参数,则使用逗号做为分隔符

返回值
ui

返回一个字符串。该字符串是经过把 arrayObject 的每一个元素转换为字符串,而后把这些字符串链接起来,在两个元素之间插入 separator 字符串而生成的。
this

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()方法用于删除并返回数组的最后一个元素。spa

语法

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"));             // 4
console.log(arr);                           // ["Geroge", "John", "Thomas", "James"]
console.log(arr.push("Peter", "Sara"));     // 6
console.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"));              // 4
console.log(arr);                               // ["James", "Geroge", "John", "Thomas"]
console.log(arr.unshift("Peter", "Sara"));      // 6
console.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'));             // 2
console.log(arr.indexOf('Thomas', 2));          // 2
console.log(arr.indexOf('Thomas', 3));          // -1
console.log(arr.indexOf('Thomas', -4));         // 2
console.log(arr.indexOf('Thomas', -3));         // -1
console.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'));             // 2
console.log(arr.lastIndexOf('Thomas', 2));          // 2
console.log(arr.lastIndexOf('Thomas', 3));          // 2
console.log(arr.lastIndexOf('Thomas', 1));          // -1
console.log(arr.lastIndexOf('Thomas', -4));         // 2
console.log(arr.lastIndexOf('Thomas', -3));         // 2
console.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);    // false

ages = [];
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);    // true

ages = [];
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);                 // 25
console.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);                 // 45
console.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);                 // 25
console.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);                 // 45
console.log(numbers);               // [15, 2, 1, 7]
复制代码

3、结束

本文会同步到个人我的博客,完整代码能够到个人github仓库查看,若是对你有帮助的话欢迎点一个Star~~

欢迎关注个人公众号

微信公众号
相关文章
相关标签/搜索