有哪些创建数组的方法?
js创建数组有以下三种方法:
- 隐式创建
var arr = ['elem1','elem2','elem3'];
- 直接实例化
var arr = new Array('elem1','elem2','elem3')
- 创建数组并给数组元素赋值
var arr = new Array();
arr[0] = 'elem1';
arr[1] = 'elem2';
arr[2] = 'elem3';
- 创建一个长度为3的数组
var arr = new Array(3);
遍历数组
A.
var weekdays = ['Tue','Wen','Thur'];
for(let key in weekdays){
console.log(key,weekdays[key]);
}
B.
var weekdays = ['Tue','Wen','Thur'];
for(let i = 0;i < weekdays.length;i++){
console.log(i,weekdays[i]);
}
C.
var weekdays = ['Tue','Wen','Thur'];
weekdays.forEach(items=>{console.log(items);});
关于数组的重要属性
arr.length
返回数组长度
关于数组的重要方法
forEach()
解释:
循环遍历数组
语法:
arr.forEach(function(currentValue, index, arr), thisValue)
- currentValue:必填,当前元素。
- index:可选,当前元素的索引。
- arr:可选,当前元素所属的数组对象。
- thisValue:可选,传递给函数的值一般用this值,如果这个参数为空,"undefined"会传递给"this"值。(这个参数一般很少填)
- 可以利用
return
跳过循环中的某一次迭代
pop()
解释:
删除数组最后一个元素并作为返回值返回,数组长度会因此减1,返回值类型取决于删除的元素类型.
语法:
arr.pop()
shift()
解释:删除数组第一个元素并作为返回值返回,数组长度会因此减1.常用于while
循环中,依次打印输出数组中的元素并清空数组,返回值类型取决于删除的元素类型.
语法:
arr.shift()
push()
解释:给原数组末尾添加一个或多个元素,返回值为添加元素后数组的长度,为number
类型.
语法:
arr.push(element1[, ...[, elementN]])
unshift()
解释:给原数组开头添加一个或多个元素,返回值为添加元素后数组的长度,为number
类型.
语法:
arr.unshift(element1[, ...[, elementN]])
join()
解释:将数组中元素组合成为一个字符串,返回值对应组合的字符串,为string
类型
语法:
arr.join([separator])
- separator:用来分隔数组中的每个元素,如果为空,则组合成的字符串会默认把原始的数组中每个元素用
,
隔开。
reverse()
解释:在原数组上操作,将原数组中元素逆序,返回值为逆序操作后的数组
语法:
arr.reverse()
slice()
解释:不改变原数组,浅拷贝的方式截取原数组的一部分,返回值为截取下来的部分,为数组类型.
语法:
arr.slice([begin[, end]])
- begin 开始截取的位置,默认值为
0
,即从数组最开始截取 - end 停止截取的位置的后一位,默认值为
arr.length
,即截取到数组末尾 - 对
beign
和end
其值可以为负数,代表倒数第几个元素
splice()
解释:在原数组上操作,替换/删除原数组的部分元素,并插入一个或多个新元素,返回值为被替换/删除掉的元素。如果被替换/删除掉多个元素,则返回被删除掉的子数组;如果没被删除/替换掉任何元素,则返回空数组。
语法:
var arrDeletedItems = array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
- start 开始替换/删除的位置
- deleteCount 从开始位置数起,总共替换/删除掉元素的个数
- item 需要插入的新元素,如果为空则不添加任何新元素
[Exercise] 用splice()
编写一个函数,实现数组元素交换位置
/* exercise for splice() */
function swapArray(arr, index1, index2) {
arr[index1] = arr.splice(index2, 1, arr[index1])[0];
return arr;
}
sort()
解释:在原数组上操作,对原数组进行排序,默认为将数组元素转化为字符串后,比较对应字符串的UTF-16
编码值,升序排序。返回值为排序后的数组。
语法:
arr.sort([compareFunction])
- compareFunction(a, b): 该函数为用户自定义,包含两个参数
a
,b
.sort()
方法会调用该用户自定义函数来排序,且如何排序取决于该函数的返回值。如果返回值为负,则a
的位置要比b
靠前;如果返回值为正,则a
的位置比b
靠后;如果返回值为0,则a
,b
相对位置保持不变。
reduce()
解释:对数组的每个元素遍历执行reducer
函数,并只返回一个值。
语法:
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
- callback: 回调函数,在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应,因为使用此函数可以把调用者与被调用者分开,所以调用者不关心谁是被调用者。它只需知道存在一个具有特定原型和限制条件的被调用函数。简而言之,回调函数就是允许用户把需要调用的函数的指针作为参数传递给一个函数,以便该函数在处理相似事件的时候可以灵活的使用不同的方法,即把函数作为参数使用的函数。
Callback Explained - accumulator: 累计的回调函数的返回值
- currentValue: 当前在被回调函数处理的数组元素
- index: 当前在被回调函数处理的数组元素的数组下标
- array: 被处理的数组
- initialValue: accumulator的初始值,如果用户不提供,则会把数组第一个元素作为初始值,并且回调函数会从第二个元素开始处理。
map()
解释:用回调函数依次处理原数组的每一个元素,并返回处理后的新数组.将被map()
处理的元素范围在第一次调用回调函数之前便已经确定.
语法:
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
- currentValue: 当前在被回调函数处理的数组元素
- index: 当前在被回调函数处理的数组元素的数组下标
- array: 被处理的数组
- this: 回调函数的
this
值
网友评论