1. 扩展运算符
作用:将对象展开
1.1 计算数组最大值
Math.max(...[1,5,2,8]) //8
1.2 复制数组(浅拷贝)
let a1 = [1, 2];
let a2 = [...a1];
1.3 合并数组
var arr1 = ['a', 'b'];
var arr2 = ['c'];
var arr3 = ['d', 'e'];
[...arr1, ...arr2, ...arr3]
// [ 'a', 'b', 'c', 'd', 'e' ]
1.4 字符串 转数组
[...'hello']
// [ "h", "e", "l", "l", "o" ]
2. 数组循环
2.1 forEach
let arr = [1, 2, 3, 4, 5]
// 三个参数(当前值,当前索引,数组)
arr.forEach((item, index, arr) => {
console.log(item, index, arr)
})
2.2 map
重新整理数据结构
let arr= [
{title: "aa",read: 100},
{title: "bb",read: 20},
{title: "cc",read: 50}
]
// 给数组里每个对象添加price属性
let newArr = arr.map(item => ({...item, price: item.read}))
2.3 filter
过滤数组
// arr.filter() 过滤
let arr= [
{title: "aa",read: 100},
{title: "bb",read: 20},
{title: "cc",read: 50}
]
// 过滤read大于50的项
let arr1 = arr.filter(item => item.read > 50)
2.4 some every
返回布尔值
let arr = [1,3,7,9,5]
// 有一项大于8就返回true
let arr1 = arr.some(item => item > 8)
// 每一项都大于8才返回true
let arr2 = arr.every(item => item > 8)
2.5 reduce
统计,求和
let arr = ['a', 'a', 'b', 'b', 'c']
arr.reduce((pre, cur) => {
pre[cur] ? pre[cur] ++ : pre[cur] = 1
return pre
}, {})
// {a: 2, b: 2, c: 1}
3 . Array.from()
作用: 把类数组对象转成数组
3.1 拷贝数组
let arr = [1,2,3]
let arr1 = Array.from(arr);
3.2 类数组转数组
Array.from('hello')
// ['h', 'e', 'l', 'l', 'o']
3.3 数组过滤
let arr = [1,2,3,3,4,5,5]
Array.from(new Set(arr))
3.4 接收第二个参数(函数), 处理每一个对象,类似map
// 过滤后平方
let arr = [1,2,3,3,4,5,5]
Array.from(new Set(arr), x => x**2)
// [1, 4, 9, 16, 25]
3.5 假值 用 0 替换
let arr = ['', undefined, null, 1,2,3]
Array.from(arr, x => x || 0)
// [0, 0, 0, 1, 2, 3]
4. arr.find()
查找第一个符合要求的数组成员,返回值,如果没找到,则返回undefined
const arr = [1,2,3,4,5];
const result = arr.find(number=>number>3);
console.log(result); // 4
5. arr.findIndex()
和find()很像,这是这里找的是位置,返回条件为真时的索引;没找到返回-1
var arr = [50,10,201,103,62,81];
var res = arr.findIndex(item => item > 100)
console.log(res); // 2
6.arr.fill()
arr.fill(需要填充的值, 填充开始位置,填充结束位置);
填充内容不包括结束的位置
var arr = new Array(3);
arr.fill("默认值");
console.log(arr); //["默认值", "默认值", "默认值"]
// 完整用法
var arr = new Array(10);
arr.fill("默认值",1,3);
console.log(arr); // [empty, "默认值", "默认值", empty × 7]
4. includes
查看数组中是否包含参数的值,返回布尔值
var arr = ["apple" , "origan","banana"];
var a = arr.includes("apple");
console.log(a); // true
var b = arr.includes("apple2");
console.log(b); // false
5. Array.of()
作用: 将一组值,转换为数组。
Array.of(1,2,3)
// [1, 2, 3]
6. flat
作用:将数组拉平
[1,2,[3,4]].flat(Infinity)
// [1, 2, 3, 4]
7. at
作用: 数组索引取值,支持负索引
let arr = [1,2,3,4,5]
arr.at(-1)
// 5
8. 其他例子
8.1 两个数组交集
let arr1 = [1,2,3,2,3]
let arr2 = [3,4,5,2,2]
let arr = [...new Set(arr1)].filter(item => arr2.includes(item))
8.2 生成1-100
new Array(100).fill(0).map((item, index) => index + 1)