初学JavaScript:数组
文章目录
- 数组
- 1、简介
- 2、创建初始化
- 2.1 字面量创建数组
- 2.2 构造函数创建数组
- 2.3 访问数组
- 3、数组遍历
- 4、数组常用API
- 4.1 指定形式返回数组项
- 4.2 数组序列化转换
- 4.3 构造函数Array中的方法
- 4.4 通过栈和队列的功能对数组进行添加删除操作
- 4.5 数组排序方法
- 4.6 数组操作方法
- 4.7 找数组元素索引
- 4.8 数组迭代方法
- 4.9 判断数组中是否包含指定元素
- 4.10 对数组累计执行回调函数并返回最终结果
数组
1、简介
ECMAScript数组是有序列表,是存放多个值的集合。
特点:
(1)每一项都可以保存任何类型的数据。
(2)数组的大小可以动态调整。
(3)数组的length属性:可读可写,可以通过设置length的值从数组的末尾移除项或向数组中添加新项。
2、创建初始化
2.1 字面量创建数组
由一对包括元素的方括号"[]“表示,元素之间以逗号”,"隔开。如下:
var names = ["terry","larry","tom"]// 可以接收任何类型的数据当做数组的元素
var name = "name";
var arr = [12,name,true,"larry",{},function(){},[],null];
console.log(arr);
//结果:[ 12, 'name', true, 'larry', {}, [Function (anonymous)], [], null ]// 通过数组下标获取对应的数据(数组下标从0开始)
console.log(arr[2]); //true// 获取数组的长度
console.log(arr.length);//arr.length
数组下标是从0开始的
2.2 构造函数创建数组
通过Array构造函数来创建数组
//构建一个数组对象
var names = new Array(); //等价于 var names = [];//创建一个指定长度的数组对象(这个长度不能是小数,会报错Error: Invalid array length)
var names = new Array(3); //这里表示创建一个包含3个元素的数组
//相当于 var names = [undefined,undefined,undefined];//创建一个包含多个元素的数组,并且将数组中的元素实参初始化
var names = new Array('jack','rose'); //这个数组包含jack和rose两个元素,该数组长度为2
2.3 访问数组
和其他语言一样,js中的数组也可以通过索引访问数组,索引从0开始。
var arr = ["terry","larry","jack"];
console.log(arr[0]); //terry
当索引大于等于数组的长度时返回undefined
var arr = ["terry","larry","jack"];
console.log(arr[10]); //undefined
console.log(arr[3); //undefined
如果数组原本长度为3,也就是存三个元素,在此基础上给大于等于原本数组长度的索引处设置值,那么就可以达到给数组添加值的效果。
var arr1 = ["terry","larry","rose"];
arr1[3] ="jacky"; //添加元素,数组长度变为4
console.log(arr1); //[ 'terry', 'larry', 'rose', 'jacky' ]var arr2 = ["terry","larry","rose"];
arr2[5] = "jacky";
console.log(arr2); //[ 'terry', 'larry', 'rose', <2 empty items>, 'jacky' ]
数组最多可以包含4 294 967 295个项
通过索引访问数组,数组的索引从0开始,数组的索引超过数组长度会访问到undefined值而不会报错。数组的长度通过length属性获取。
a) [index] 直接访问,索引可以超过索引范围,只不过访问的值为undefined
b) length-1=Max(index),length-1表示数组的最大索引位置
c) length+N 或 length-N 开辟新的内存空间 或 数组元素的删除
var arr = ["terry","larry","tom"];
// 开辟新空间
arr.length = 4
//数组元素删除
arr.length = 2
3、数组遍历
普通的for循环、增强版for循环、while循环、do-while循环都可以实现数组遍历,例如:
var arr = [1,2,3];
//普通for循环
for(var i=0;i<arr.length;i++){var item = arr[i];
}//增强for循环
for(var index of arr){var val = arr[index]
}
4、数组常用API
4.1 指定形式返回数组项
toString()
在默认情况下都会以逗号分隔字符串的形式返回数组项。
join()
指定的字符串用来分隔数组字符串。
例如:
var arr = [1,5,2,8,10,{a:1}];
console.log(arr);//[ 1, 5, 2, 8, 10, { a: 1 } ]
console.log(arr.toString());// 1,5,2,8,10,[object Object]
console.log(arr.join(""));// 152810[object Object]
console.log(arr.join("-"));// 1-5-2-8-10-[object Object]
4.2 数组序列化转换
var arr = [1,5,2,8,10,{a:1}];
var result = JSON.stringify(arr);
console.log(result);// [1,5,2,8,10,{"a":1}]
console.log(JSON.parse(result)); // [ 1, 5, 2, 8, 10, { a: 1 } ]
下面是node运行后的结果
下面是浏览器显示的结果
4.3 构造函数Array中的方法
Array.isArray()
用来判断某个变量是否是一个数组对象。
var arr = [1,"hello",true];
var IS = Array.isArray(arr);
console.log(IS); //true
Array.from()
从类数组对象或者可迭代对象中创建一个新的数组实例。
var myArr = Array.from("helloworld");
console.log(myArr); //['h', 'e', 'l', 'l','o', 'w', 'o', 'r','l', 'd']
Array.of()
根据一组参数来创建新的数组实例,支持任意的参数数量和类型
Array.of(7); // [7]
Array.of(1, 2, 3); // [1, 2, 3]
4.4 通过栈和队列的功能对数组进行添加删除操作
Array.prototype.push()
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。注意,返回值是Number类型。
语法:array.push(item1,item2,item3,...,itemx);
例如:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
// push() 添加元素到末尾 参数是要添加的元素 返回值是修改之后数组的长度【改变原数组】
fruits.push("Kiwi")
console.log(fruits);//结果输出:[ 'Banana', 'Orange', 'Apple', 'Mango', 'Kiwi' ]
console.log(fruits.push("Strawberry")); //6
Array.prototype.pop()
pop() 方法用于删除数组的最后一个元素并返回删除的元素。此方法改变数组的长度。
语法:array.pop()
例如:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.pop();
console.log(fruits); //结果输出:[ 'Banana', 'Orange', 'Apple' ]
console.log(fruits.pop()); //Apple
Array.prototype.shift()
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。 此方法改变数组的长度。
语法:array.shift()
例如:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.shift()
console.log(fruits);//[ 'Orange', 'Apple', 'Mango' ]
console.log(fruits.shift()); //Orange
Array.prototype.unshift()
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。该方法将改变数组的数目。
语法:array.unshift(item1,item2, ..., itemx)
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon","Pineapple");
console.log(fruits); //[ 'Lemon', 'Pineapple', 'Banana', 'Orange', 'Apple', 'Mango' ]
console.log(fruits.unshift()); //6
4.5 数组排序方法
Array.prototype.sort()
sort() 方法用于对数组的元素进行排序。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。如果要想进行升序或是降序排序的话,还要提供比较函数。
排序顺序可以是字母或数字,并按升序或降序。
默认排序顺序为按字母升序。
语法:array.sort(sortfunction)
,sortfunction是函数,用来规定排序顺序。
默认排序:
按照Ascall码进行排序。
例一:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
console.log(fruits)
//fruits 输出结果:Apple,Banana,Mango,Orange
例二:
var numbers = [20,1,2,10,15,27,24];
numbers.sort();
console.log(numbers); //[ 1, 10, 15, 2, 20, 24, 27 ]
为什么数字排序这里的2不是排在1的后面,而是反而在15的后面呢?原因是按照字符编码排序时,比较的时每个字符的编码值,15和2比较时,会先拿出15中字符1的编码值和2的编码值进行比较,1小于2,所以,15排在2的前面。
通过函数改变排序的升序、降序
有如下规则:
当 a>b 时,
a - b > 0 ,排序结果 ===> b,a (升序)
b - a < 0 ,排序结果 ===> a,b (降序)当 b>a 时,
a - b < 0 ,排序结果 ===> a,b (升序)
b - a > 0 ,排序结果 ===> b,a (降序)当 a=b 时,
a - b = b - a =0 , 排序结果 ===> 保持不变
可以看到,无论a>b还是b>a,return a-b 总能得到升序的结果,而 return b-a 总能得到降序的结果。
将这些规则写到函数中就可以起到升序或者降序的作用,如下:
升序
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return a-b
});console.log(points); //[ 1, 5, 10, 25, 40, 100 ]
降序
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return b-a
});
console.log(points); //[ 100, 40, 25, 10, 5, 1 ]
可以看到此时就是正常的数字的升序和降序了。
Array.prototype.reverse()
reverse() 方法用于颠倒数组中元素的顺序。
语法:array.reverse()
例如:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse(); //将数组颠倒
console.log(fruits); //输出颠倒后的数组:[ 'Mango', 'Apple', 'Orange', 'Banana' ]
4.6 数组操作方法
Array.prototype.concat()
concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本,。
返回的数组数组是通过把所有 arrayX 的参数添加到 arrayObject 中生成的。
如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组对象。
语法:array1.concat(array2,array3,...,arrayX)
var hege = ["Cecilie", "Lone"];
var stale = ["Emil", "Tobias", "Linus"];
var kai = ["Robin"];
var children = hege.concat(stale,kai);
//children 输出结果:Cecilie,Lone,Emil,Tobias,Linus,Robin
Array.prototype.slice()
slice() 方法可从已有的数组中返回选定的元素。
slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。这种方法不会改变原始数组。
语法:array.slice(start, end)
start参数:
规定从何处开始选取。如果该参数时正数,则从指定索引处开始提取;如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
end参数:
定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)
返回值:
返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1,3);
//citrus 结果输出:Orange,Lemon
Array.prototype.splice()
splice() 方法用于添加或删除数组中的元素,返回的是被删除或添加元素后的原始数组。这种方法会改变原始数组。
语法:array.splice(index,howmany,item1,.....,itemX)
参数 | 描述 |
---|---|
index | 必需。规定从何处添加/删除元素。 该参数是开始插入或删除的数组元素的下标,必须是数字。 |
howmany | 可选。规定应该删除多少元素。必须是数字,但可以是 “0”。 如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。 |
item1, …, itemX | 可选。要添加到数组的新元素 |
返回值:返回的是被删除元素后的原始数组。
例如:
向数组中添加元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
//从数组索引位置 2 开始,不删除元素,添加两个新的元素"Lemon","Kiwi"
fruits.splice(2,0,"Lemon","Kiwi");
console.log(fruits); //[ 'Banana', 'Orange', 'Lemon', 'Kiwi', 'Apple', 'Mango' ]
var fruits = ["Banana", "Orange", "Apple", "Mango"];
//移除数组的第三个元素(索引2处),并在数组第三个位置(索引2处)添加新元素
fruits.splice(2,1,"Lemon","Kiwi");
console.log(fruits); //[ 'Banana', 'Orange', 'Lemon', 'Kiwi', 'Mango' ]
4.7 找数组元素索引
Array.prototype.indexOf()
indexOf() 方法可返回数组中某个指定的元素位置。
语法:array.indexOf(item,start)
item是要查找的元素,start是检索的开始位置,是可选的整数参数,其合法取值为数组长度-1。未指定start参数时,默认从头到尾地检索数组,看它是否含有对应的元素。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。未找到指定元素则返回-1。
例如:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");
console.log(a); //2
Array.prototype.lastIndexOf()
lastIndexOf() 方法可返回一个指定的元素在数组中最后出现的位置,从该字符串的后面向前查找。返回值是Number类型,是指定元素最后出现位置的索引值。
语法:array.lastIndexOf(item,start)
item是要查找的元素,start是检索的开始位置,是可选的整数参数,其合法取值为数组长度-1。指定start参数时,默认从尾到头地检索数组,看它是否含有对应的元素。如果找到一个 item,则返回 item 的第一次出现的位置。如果未找到指定元素则放回-1。
例如:
var fruits = ["Apple", "Orange", "Apple", "Mango"];
var a = fruits.lastIndexOf("Apple");
console.log(a); //2
4.8 数组迭代方法
Array.prototype.every()
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供检测方法)。
every() 方法使用指定函数检测数组中的所有元素:
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 如果所有元素都满足条件,则返回 true。
语法:array.every(function(currentValue,index,arr), thisValue)
every方法中的参数
参数 | 描述 |
---|---|
function(currentValue, index,arr) | 必须。函数,数组中的每个元素都会执行这个函数 函数参数见下表 |
thisValue | 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。 如果省略了 thisValue ,“this” 的值为 “undefined” |
every函数中检测函数的参数
参数 | 描述 |
---|---|
currentValue | 必须。当前元素的值 |
index | 可选。当前元素的索引值 |
arr | 可选。当前元素属于的数组对象 |
返回值是个布尔值,所有元素都通过检测返回 true,即便有一个未通过也会返回false。
注意:every() 不会对空数组进行检测,不会改变原始数组。
例如:
//检测数组 ages数组中的所有元素是否都大于等于 18 :
var ages = [32, 33, 16, 40];var result = ages.every(function (age) {return age >= 18
})
console.log(result);//输出结果为:false
Array.prototype.some()
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
some() 方法会依次执行数组的每个元素:
- 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
- 如果没有满足条件的元素,则返回false。
注意: some() 不会对空数组进行检测,some() 不会改变原始数组。
语法:array.some(function(currentValue,index,arr),thisValue)
some()中的参数
参数 | 描述 |
---|---|
function(currentValue, index,arr) | 必须。函数,数组中的每个元素都会执行这个函数 (函数参数见下表) |
thisValue | 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。 如果省略了 thisValue ,“this” 的值为 “undefined” |
函数内部参数
参数 | 描述 |
---|---|
currentValue | 必须。当前元素的值 |
index | 可选。当前元素的索引值 |
arr | 可选。当前元素属于的数组对象 |
返回值是布尔值。如果数组中有元素满足条件返回 true,所有元素不满足条件时则返回 false。
例如:
var ages = [32, 33, 16, 40];
//检测数组中是否有元素大于 18:
var result = ages.some(function (age) {return age >= 18
})
console.log(result);//输出结果为:true
Array.prototype.filter()
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测,filter() 不会改变原始数组。
语法:array.filter(function(currentValue,index,arr), thisValue)
filter()中的参数
参数 | 描述 |
---|---|
function(currentValue, index,arr) | 必须。函数,数组中的每个元素都会执行这个函数 (函数参数见下表) |
thisValue | 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。 如果省略了 thisValue ,“this” 的值为 “undefined” |
filter()中的函数参数
参数 | 描述 |
---|---|
currentValue | 必须。当前元素的值 |
index | 可选。当前元素的索引值 |
arr | 可选。当前元素属于的数组对象 |
返回值是一个数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
例如:
var ages = [32, 33, 16, 40];
//返回数组 ages 中所有元素都大于 18 的元素:
var result = ages.filter(function (age) {return age >= 18
})
console.log(result);//输出结果为:[ 32, 33, 40 ]
Array.prototype.map()
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测, map() 不会改变原始数组。
语法:array.map(function(currentValue,index,arr), thisValue)
参数 | 描述 |
---|---|
function(currentValue, index,arr) | 必须。函数,数组中的每个元素都会执行这个函数 函数参数见下表 |
thisValue | 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。 如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。 |
函数参数
参数 | 描述 |
---|---|
currentValue | 必须。当前元素的值 |
index | 可选。当前元素的索引值 |
arr | 可选。当前元素属于的数组对象 |
返回值:返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
var numbers = [4, 9, 16, 25];
//返回一个数组,数组中元素为原始数组的平方根:
var result = numbers.map(function (number) {return Math.sqrt(number)
})
console.log(result);//输出结果为:[ 2, 3, 4, 5 ]
Array.prototype.forEach()
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
注意: forEach() 对于空数组是不会执行回调函数的。
语法:array.forEach(function(currentValue, index, arr), thisValue)
参数 | 描述 |
---|---|
function(currentValue, index, arr) | 必需。 数组中每个元素需要调用的函数。 函数参数见下表 |
thisValue | 可选。传递给函数的值一般用 “this” 值。 如果这个参数为空, “undefined” 会传递给 “this” 值 |
函数参数
参数 | 描述 |
---|---|
currentValue | 必需。当前元素 |
index | 可选。当前元素的索引值。 |
arr | 可选。当前元素所属的数组对象。 |
返回值为undefined
例如:
var numbers = [4, 9, 16, 25];
//列出数组的每个元素
numbers.forEach(function (number, index) {console.log(index + ' -- ' + number);
})
// 0 -- 4
// 1 -- 9
// 2 -- 16
// 3 -- 25
filter()方法和map()方法的区别就是:filter是选择性的留下元素,map是保留按照一定条件转换后的所有元素
4.9 判断数组中是否包含指定元素
Array.prototype.includes()
includes()方法用于确定调用数组是否包含一个值,根据情况返回 true 或 false
语法:array.includes(searchElement,fromIndex)
参数 | 描述 |
---|---|
searchElement | 需要查找的元素值 |
fromIndex | 从指定索引处开始查找,如果为负值,则按升序从array.length+fromIndex的索引开始查 |
返回值:
数组中存在指定元素则返回true,不存在则返回false
例如:
let array = [2,5,"hello",true,"你好"]let result1 = array.includes("2") // false
let result2 = array.includes(2) // true
let result3 = array.includes("hello") // true
let result4 = array.includes(true) // true
4.10 对数组累计执行回调函数并返回最终结果
Array.prototype.reduce()
语法:array.reduce(reducer函数,initialValue)
或者
array.reduce(function(previousValue,currentValue,currentIndex,array){},initialValue)
或者
array.reduce((previousValue,currentValue,crrentIndex,array) => {},initialValue)
官方是这么介绍的:
reduce() 方法对数组中的每个元素按序执行一个由您提供的 reducer 函数,每一次运行 reducer会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。
简单来说,reduce()方法对数组中的元素从左到右(0索引~n索引处)进行计算,并且前一个计算得出的结果将会成为后一次计算过程的参数,直到最后一个元素完成计算。
需要注意的是:
第一次执行回调函数时,不存在“上一次的计算结果”。如果需要回调函数从数组索引为 0 的元素开始执行,则需要传递初始值。否则,数组索引为 0 的元素将被作为初始值 initialValue,迭代器将从第二个元素开始执行(索引为 1 而不是 0)。
参数 | 描述 |
---|---|
reducer函数 | 该函数下包含四个参数:previousValue,currentValue,currentIndex,array,具体介绍看下面 |
initialValue(可选) | 作为第一次调用reducer函数时参数previousValue的值。如果指定了初始值initialValue,则currentValue将使用数组第一个元素,否则,previousValue将使用数组第一个元素,而currentValue将使用数组第二个元素 |
reducer函数中参数介绍
参数 | 描述 |
---|---|
previousValue | (必须)上一次调用callbackFn时的返回值。在第一次调用时,若指定了初始值initialValue,则previousValue的值为initialValue的值,否则为数组索引为0的元素的值 |
currentValue | (必须)数组中正在处理的元素,在第一次调用时,若指定了初始值,initialValue,器指责为索引为0的元素array[0],否则为array[1] |
currentIndex | (可选)数组中正在处理的元素的索引 |
array | (可选)用于遍历的数组 |
返回值为回调函数reducer遍历整个数组后的结果
例如:数组求和
let arr = [1,2,3,4,5]// #方式一:普通方法连加起来
// 初始值:sum,存储最终的结果
let sum = 0
for (let a of arr){sum += a
}console.log(sum); // 15// #方式二:使用reduce方法
// 不设置初始值
let result1 = arr.reduce((previousValue,currentValue,arr) => {console.log(previousValue,"previousValue ============");console.log(currentValue,"currentValue ============");return previousValue + currentValue
})console.log(result1); // 15// 设置初始值initialValue
let initialValue = 0
let result2 = arr.reduce((previousValue,currentValue,arr) => {console.log(previousValue,"previousValue ============");console.log(currentValue,"currentValue ============");return previousValue + currentValue
},initialValue)
console.log(result2); // 15
结果如下:
15
1 previousValue ============
2 currentValue ============
3 previousValue ============
3 currentValue ============
6 previousValue ============
4 currentValue ============
10 previousValue ============
5 currentValue ============
15
0 previousValue ============
1 currentValue ============
1 previousValue ============
2 currentValue ============
3 previousValue ============
3 currentValue ============
6 previousValue ============
4 currentValue ============
10 previousValue ============
5 currentValue ============
15可以看到,没有使用initialValue定义的初始值的时候,previousValue所取的值是arr[1]的值,currentValue取的是arr[2]的值,而使用initialValue定义的初始值时,则previousValue所取值为initialValue的值,currentValue取得值数组arr[0]的值
补充,如果数组为空且未指定初始值initialValue则会抛出TypeError;如果数组中仅有一个元素且未提供初始值initialValue或者数组为空但提供了初始值initialValue,那么将返回这个唯一值。
例如:
let arr1 = [] // 空数组
let arr2 = [1] // 只含有一个元素的数组// 数组为空,且无初始值,结果报错TypeError
let result1 = arr1.reduce((previousValue,currentValue) => {return previousValue + currentValue
})
console.log(result1);/*** 报错:* TypeError: Reduce of empty array with no initial value*/let initialValue = 2
// 数组为空,有初始值,有结果
let result2 = arr1.reduce((previousValue,currentValue) => {return previousValue + currentValue
},initialValue)
console.log(result2); // 2// 数组不为空,无初始值,有结果
let result3 = arr2.reduce((previousValue,customElements) => {return previousValue + currentValue
})
console.log(result3); // 1
reduce()方法的其他用法请看这【reduce()方法的使用场景】
初学JavaScript:数组相关推荐
- JavaWeb之初学JavaScript
JavaWeb之初学JavaScript 一.JavaScript概述 二.JavaScript和HTML结合的方式 2.1 内嵌式 2.2 外联式 2.3 行内事件驱动式 三.基本语法 3.1 注释 ...
- [JavaScript] JavaScript数组挖掘,不只是讲数组哟(2)
课程来源:后盾人 上一篇的内容:[JavaScript] JavaScript数组挖掘,不只是讲数组哟 数组引用类型分析,多维数组,用Array.of为数组创建细节,类型检测与转换,在一个数组后面加一 ...
- 这是如何更好地利用JavaScript数组的方法
by pacdiv 由pacdiv 这是如何更好地利用JavaScript数组的方法 (Here's how you can make better use of JavaScript arrays) ...
- Javascript 数组
Javascript 数组 Javascript中的Array可以包含任意数据类型,并通过索引来访问每个元素. 要取得Array的长度,直接访问length属性: var arr = [1, 2, 3 ...
- JavaScript 数组拼接打印_JavaScript 数组方法
JavaScript 数组方法 JS 数组 JS 数组排序 JavaScript 数组的力量隐藏在数组方法中. 把数组转换为字符串 JavaScript 方法 toString() 把数组转换为数组值 ...
- 如何将JavaScript数组信息导出到csv(在客户端)?
本文翻译自:How to export JavaScript array info to csv (on client side)? I know there are lot of questions ...
- 从JavaScript数组中获取随机项[重复]
本文翻译自:Get random item from JavaScript array [duplicate] This question already has answers here : 这个问 ...
- 创建零填充JavaScript数组的最有效方法?
在JavaScript中创建任意长度的零填充数组的最有效方法是什么? #1楼 使用对象符号 var x = []; 零填充? 喜欢... var x = [0,0,0,0,0,0]; 充满" ...
- 判断javascript数组的方法
2019独角兽企业重金招聘Python工程师标准>>> 判断javascript数组的方法 var is_array=function(){ return value &&a ...
- 深入浅出 JavaScript 数组 v0.5
有一段时间不更新博客了,今天分享给大家的是一篇关于JS数组的,数组其实比较简单,但是用法非常灵活,在工作学习中应该多学,多用,这样才能领会数组的真谛. 以下知识主要参考<JS 精粹>和&l ...
最新文章
- 欢迎大家批评:CSDN Blog用户体验调查
- Clean-Code: 注释
- myeclips/eclipse配置总结(根据网络整理)
- 用UltraIso刻录XP到U盘安装是不行的
- 三分钟教你用 Scarlet 写一个 WebSocket App
- fasta文件中DNA to RNA
- 使用C#中的反射从字符串获取属性值
- 了解Python编程——Python学习(三)
- c#代码片段新建(sinppet)
- 【21天python打卡】第15天 python经典案例(1)
- vb与mysql实现登录界面_VB连接SQL数据库做用户登录窗口
- UiAutomator2—By、BySelector
- 2017杭州云栖大会精华PPT
- css less 不要作用到子对象_CSS的亲儿子,居然不是Less??
- 各种浏览器User-Agent大全
- Skywalking+Nacos实现高可用集群和动态配置
- 集通字库芯片GT20L16S1Y 读取字体数据
- 凯斯西储大学轴承数据介绍及处理
- html5黑板源码,HTML5/Canvas黑板涂鸦动画
- 网站备案和公安备案区别