数组骚操作

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值