Open xszi opened 4 years ago
splice
—— 在任意位置添加或删除元素var numbers = [1, 5, 3, 4, 9, 7]
numbers.splice(3, 1, 2)
console.log(numbers)
// 在索引为3的位置,删除一个数(此时为4),再添加一个数2
// 故结果为[1, 5, 3, 2, 9, 7]
不推荐使用delete
删除数组元素,因为:
var numbers = [1, 5, 3, 4, 9, 7]
delete numbers[4]
console.log(numbers)
// 结果为[1, 5, 3, 2, empty, 7],依然占据位置
every
和 some
var isEven = (x) => {
return (x % 2) === 0
}
var numbers1 = [1, 5, 3, 4, 9, 7]
var numbers2 = [2, 4, 6, 8, 10]
number1.every(isEven) // false
number2.every(isEven) // true
number1.some(isEven) // true
number2.some(isEven) // true
reduce
常用于数组元素求和,看一个题目:使用简单的数组操作方法将数组里面的大于0的数字求和。
const arr = [1, 6, -1, 4, -3, 7, 8]
const result = arr.filter(elem => elem > 0).reduce((pre, cur) => pre + cur, 0)
for ... in
和 for ... of
for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。 所以for in更适合遍历对象,不要使用for in遍历数组。
Array.from()
和Array.of()
const numbers = [1, 5, 3, 4, 9, 7, 6]
const evens = Array.from(numbers, x => (x % 2 === 0)) // [false, false, false, true, false, false, true]
const numbers = Array.of(1, 2, 3)// [1, 2, 3] 类似于[...numbers1]
fill
let numbers = Array.of(1, 2, 3, 4, 5, 6)
numbers.fill(0)
console.log(numbers)// [0, 0, 0, 0, 0, 0]
numbers.fill(2, 1) //// [0, 2, 2, 2, 2, 2]
numbers.fill(1, 3, 5) //// [0, 2, 2, 1, 1, 2]
copyWithin
let numbers = Array.of(1, 2, 3, 4, 5, 6)
numbers.copyWithin(0, 3) // [4, 5, 6, 4, 5, 6]
numbers.copyWithin(1, 3, 5) // [4, 4,5, 4, 5, 6]
find
和 findIndex
find
返回第一个满足条件的值
findIndex
返回第一个满足条件的值得索引
对数组这块一些重要,还不怎么熟悉的API再过一遍。