【一】数组基本须知
1.和python中的列表很像
2.语法:
var arr = []
var arr = new Array()
3.数组获取元素
索引取值
如果索引超过最大值 得到的结果是 undefined
4.数组的长度
arr.length
可以通过修改数组的length可以改变数组的长度,拉长了数组获取后续项的值是undefined
如果缩短数组的长度,后续的项数会被删除,且不可逆
【二】数组常用方法
方法名称 | 功能描述 | 返回值类型 |
---|
forEach/for...of | 遍历数组(forEach处理每个元素,for...of可读取元素并自动解包) | 无 |
concat | 合并数组 | 新数组 |
join | 将数组转化为字符串 | 字符串 |
pop | 删除数组最后一个元素 | 删除的数据(即数组最后一个元素) |
shift | 删除数组第一个元素 | 删除的数据(即数组第一个元素) |
unshift | 在数组开头插入元素 | 新数组长度 |
push | 在数组末尾添加元素 | 新数组长度 |
reverse | 翻转数组顺序 | 翻转后的数组 |
sort | 对数组元素排序 | 排序后的数组 |
slice | 截取数组部分元素 | 新数组 |
splice | 插入、删除或替换数组元素 | 被删除或替换的元素 |
toString | 数组转为字符串 | 字符串 |
valueOf | 获取数组原始值 | 原始值 |
indexOf | 查找指定元素在数组中的位置 | 元素索引(若不存在则返回 -1) |
lastIndexOf | 查找指定元素在数组中最后一次出现的位置 | 元素索引 |
map | 应用函数映射数组元素 | 新数组 |
filter | 根据条件筛选数组元素 | 新数组 |
every | 判断数组所有元素是否都满足条件 | 布尔值 |
some | 判断数组是否有元素满足条件 | 布尔值 |
reduce | 按规则累积数组元素生成单个返回值 | 单一返回值 |
rightReduce | 类似于reduce,但从数组末尾开始累积 | 单一返回值 |
(1)forEach 和 for...of
1.数组.forEach( 回调函数: (值, 索引, 原数组) => 返回值)
遍历数组(forEach处理每个元素,for...of可读取元素并自动解包)
let arr=["a","b","c","d","e"];
arr.forEach((v,i,list)=>{
console.log(v);
console.log(i);
console.log(list);
})
2.// for...of 示例--->类似python的for i in arr
for(i of arr){
console.log(i)
}
(2)concat合并
arr=["a","b","c","d","e"];
arr.concat("s","c")
console.log(arr)//[ 'a', 'b', 'c', 'd', 'e' ]
影响原数组
(3)join将数组转化为字符串
arr=["a","b","c","d","e"];
arr.toString()
console.log(arr)//[ 'a', 'b', 'c', 'd', 'e' ]
(4)pop 和 shift
● pop删除数组最后一个元素
● shift删除数组第一个元素
arr=["a","b","c","d","e"];
// pop 示例
console.log(arr.pop()) - 原数组已变e
// shift 示例
console.log(arr.shift())// 原数组已变a
(5)unshift在数组开头插入元素
arr=["a","b","c","d","e"];
arr.unshift("k")
console.log(arr)//[ 'k', 'b', 'c', 'd', 'e' ]
(6)push在数组末尾添加元素
arr=["a","b","c","d","e"];
arr.push("qqq")
console.log(arr)//[ 'a', 'b', 'c', 'd', 'e', 'qqq' ]
(7)reverse翻转数组顺序
arr.reverse()
console.log(arr)//[ 'e', 'd', 'c', 'b', 'a' ]
(8)sort对数组元素排序升序
arr.sort((a,b)=>2)
console.log(arr) // 自定义排序规则,升序排列[ 'a', 'b', 'c', 'd', 'e' ]
(9)slice截取数组部分元素(顾头不顾尾)
arr.slice(1,2)
console.log(arr.slice(1,2))//[ 'b' ]
console.log(arr)//[ 'a', 'b', 'c', 'd', 'e' ]
(10)splice插入、删除或替换数组元素
let arr = ['a', 'b', 'c', 'd', 'e'];
截取索引1-2顾头不顾尾,将x,y替换到被截取的位置
arr.splice(1,2,"x","y")
console.log(arr)//[ 'a', 'x', 'y', 'd', 'e' ]
//截取多了有多少截取多少不报错
arr.splice(0,6)
console.log(arr)//[]
(11)toString数组转为字符串
let arr = [1, 2, 3];
let str = arr.toString(); // "1,2,3"
console.log(str);
(12)valueOf获取数组原始值
let arr = [1, 2, 3];
let val = arr.valueOf(); // [1, 2, 3]
console.log(val);
(13)indexOf查找指定元素在第一次出现在数组中的位置
let arr = ['a', 'b', 'c', 'd', 'a'];
let index = arr.indexOf('a'); // 0
console.log(index);//有则打印出索引,无则-1
(14)lastIndexOf查找指定元素在数组中最后一次出现的位置
let arr = ['a', 'b', 'c', 'a', 'b'];
let lastIndex = arr.lastIndexOf('a'); // 4
console.log(lastIndex);
(15)map应用函数映射数组元素
arr=[1,2,3,4,5]
console.log(arr.map((num,i)=>{
console.log(num*i)
}))
(16)filter根据条件筛选数组元素
arr=[1,2,3,4,5]
a=arr.filter((num)=>num%2===0)
console.log(a) // [2, 4]
(17)every判断数组所有元素是否都满足条件
arr=[1,2,3,4,null]
a=arr.every((num)=>num)
console.log(a)
(18)some判断数组是否有元素满足条件
arr=[1,2,3,4,null]
a=arr.some((num)=>num)
console.log(a)//true
(19)reduce按规则累积数组元素生成单个返回值
let arr = [1, 2, 3, 4, 5];
let sum = arr.reduce((total, num) => total + num, 0); // 15
console.log(sum);
(20)rightReduce类似于reduce,但从数组末尾开始累积
let arr = [1, 2, 3, 4, 5];
let reversedSum = arr.reduceRight((total, num) => total + num, 0); // 15 (等于sum,因为是从后向前累加)
console.log(reversedSum);
(21)统计数组长度
var arr= [11,22,33,44,55,66];
// undefined
arr
// (6) [11, 22, 33, 44, 55, 66]
// (1)统计数组的个数
arr.length
// 6
以下是JavaScript中数组的一些变更方法:
push(): 向数组的末尾添加一个或多个元素,并返回新的长度。
pop(): 删除并返回数组的最后一个元素。
shift(): 删除并返回数组的第一个元素。
unshift(): 向数组的开头添加一个或多个元素,并返回新的长度。
splice(): 通过删除或替换现有元素或者添加新元素来改变一个数组的内容。
sort(): 对数组的元素进行排序,并返回数组。排序不一定是稳定的。默认排序顺序是根据字符串Unicode码点。
reverse(): 颠倒数组中元素的顺序,并返回数组。
fill(): 用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。
copyWithin(): 在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有数据),然后返回当前数组。
以下是非变更方法:
slice(): 返回一个新的数组对象,这一对象是一个由开始到结束(不包括结束)选择的、由原数组的浅拷贝构成。原始数组不会被改变。
concat(): 用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
join(): 将一个数组(或一个类数组对象)的所有元素都转化成一个字符串并连接在一起。
map(): 创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
filter(): 创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
reduce(): 对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个输出值。
some() 和 every(): 这两个方法都是对数组中的每一项运行给定函数,如果 some() 方法中的函数对任一项返回 true,则整个表达式返回 true,且剩余的元素不会再执行检测。如果 every() 方法中的函数对所有元素都返回 true,则整个表达式返回 true,否则返回 false。
find() 和 findIndex(): 这两个方法都返回数组中满足提供的测试函数的第一个元素的值或索引。如果没有符合条件的元素,则返回 undefined 或 -1。