增强的数组功能

Friday, August 23, 2019

第十章 增强的数组功能

创建数组

Array.of()方法,用于创建数组,不会和 new Array()一样混乱是定义长度还是添加元素。

let a = Array.of(2)
let b = Array.of('2')
console.log(a, b) // (2,'2')

Array.from()方法,将类数组转换成数组

let c = {
    add(value) {
        return value + 1
    },
}
function a(num1, num2) {
    let b = Array.from(arguments, c.add, c)
    console.log(b)
}
a(2, 3) // [3, 4]

数组去重

function test() {
    return Array.from(new Set(...arguments))
}
const s = test([1, '2', 3, 3, '2'])
console.log(s) // [1,"2",3]

数组上的新方法

find() 寻找符合搜索规则的元素,返回它并停止搜索,该方法接受两个参数,一个是回调函数,第二个是 this 值(可选)。

回调函数可以接受 3 个参数,分别是数组的某个元组,该元素的索引位置,和数组自身,当满足规则条件时,回调函数应该返回 true。

let numbers = [25, 30, 35, 40, 45]
console.log(numbers.find((n) => n > 20)) // 25

findIndex() 与 find()相似,但返回的时下标。

let numbers = [25, 30, 35, 40, 45]
console.log(numbers.findIndex((n) => n > 20)) // 0

fill() 用特定值填充数组 fill(特定值,开始位置,结束位置(不包括))。

let numbers = [25, 30, 35, 40, 45]
console.log(numbers.fill(520, 2, 4)) //  [25, 30, 520, 520, 45]

copyWithin(开始替换位置,替换内容位置,结束位置(不包括))。

let numbers = [25, 30, 35, 40, 45, 50, 20, 60]
console.log(numbers.copyWithin(3, 2, 6)) // [25, 30, 35, 35, 40, 45, 50, 60]