数组 【JavaScript】

82 阅读4分钟

什么是数组

  • 数组是一个包含了多个值的对象,数组是一个特殊的对象,本质上两者没什么区别

2.创建数组

有两种方法可以创建数组

// 通过new关键字  
let arr = new Array[1,2,3,4] 

// 通过字面量创建
let arr2 = [1,2,3,4]

3.数组的静态方法

  • Array.from() 将类数组转换为真数组,使之具有数组的特性
function test() {
    console.log(Array.isArray(arguments)) // false
    const newArr = Array.from(arguments)
    console.log(Array.isArray(newArr)) // true
}

test(1,2,3,4)
  • Array.isArray() 如果参数是数组,则返回true,否则返回false
const arr = [1,2,3]
console.log(Array.isArray(arr)) // true
  • Array.of() 将所有参数返回一个新的数组
const arr = Array.of(1,2,3)
console.log(arr) // [1,2,3]

数组实例方法

  • length获取数组的长度
let arr = [1,2,3]  
console.log(arr.length) // 3
  • 字符串和数组之间的转换

    • 字符串转化为数组 split()
let animal = "cat,dog,pig"  
let arr = animal.split(',') // 用逗号分隔字符串,使之成为数组的项  
console.log(arr) // ['cat', 'dog', 'pig']
  • 字符串转化为数组 join(), toString()
let newString = arr.join()  
console.log(newString) // 'cat,dog,pig'

let newString = arr.toString()  
console.log(newString) // cat,dog,pig
  • 添加数据项 push() unshift() splice()
let arr = [1,2,3]  

arr.push(5) // 在数组末尾添加数据  
console.log(arr) // [1,2,3,5]  

arr.unshift(10) // 在数组顶端添加数据  
console.log(arr) // [10,1, 2,3,5]  

arr.splice(0,0,20) // 在下标为0的地方,删除0个数据,添加数字是20  
console.log(arr) // [20,10,1,2,3,5]
  • 删除数据pop() shift() splice()
let arr = [1,2,3,4,5]
arr.pop() // 在数组末尾删除数据
console.log(arr) // [1,2,3,4] 

arr.shift() // 在数组顶端删除数据 
console.log(arr) // [ 2,3,4] 

arr.splice(0,1) // 在下标为0的地方,删除1个数据 
console.log(arr) // [3,4]
  • 拼接数据 concat()
let arr1 = [1,2,3]  
let arr2 = [4,5,6]  
console.log(arr1.concat(arr2)) // [1,2,3,4,5,6]
  • 查找数据 indexOf() includes()
let arr = [1,2,3,4]  
arr.indexOf(5) // 从数组中依次查找对应的数据,查找时使用严格相等进行比较。找到第一个匹配的下标,返回。如果没有找到,则得到-1;  
console.log(arr.indexOf(5)) // -1  

// includes() 查找数组是否包含某个元素,返回一个布尔值  
let arr = [1,2,3]  
console.log(arr.includes(3)) // true
  • 填充数据 fill()

    • fill(value,start,end) 将value值,从start下表开始,填充到end(结束下标取不到),没有第三个参数则填充到数组末尾
let arr = [1,2,3,4,5]  
let newNumber = arr.fill(8, 1)  
console.log(newNumber) // [1,8,8,8,8]  
let newNumber2 = arr.fill(0,1,2)  
console.log(newNumber2) // [1,0,8,8,8]

  • 返回一个新数组(浅拷贝) slice()
    • slice(start,end) 从start开始,到end为止的一个新对象(结束下标取不到)
let arr = [1,2,3,4,5,6]  
arr.slice(1,3) // [2,3]
  • every() 数组中所有元素都满足条件返回true,否则返回false
    • 参数: function(element, index, arr)
    • element: 数组当前处理的元素
    • index: 当前元素的索引
    • arr: 数组本身
const arr = [50, 60, 70, 80]
const result = arr.every(item => {
    return item >= 50
})
console.log(result) // true
  • some() 数组中至少一个元素满足条件返回true,否则返回false
    • 参数: function(element, index, arr)
    • element: 数组当前处理的元素
    • index: 当前元素的索引
    • arr: 数组本身
const arr = [50, 60, 70, 80]
const result = arr.some(item => {
    return item >= 60
})
console.log(result) // true
  • filter() 根据条件过滤数组中的元素,满足条件返回一个新对象
    • 参数: function(element, index, arr)
    • element: 数组当前处理的元素
    • index: 当前元素的索引
    • arr: 数组本身
const arr = [50,60, 70, 80, 90]
const result = arr.filter(item => {
    return item >= 60
})

console.log(result) // [60, 70, 80, 90]
  • map() 根据条件映射数组中的每一个元素,返回一个新对象
    • 参数: function(element, index, arr)
    • element: 数组当前处理的元素
    • index: 当前元素的索引
    • arr: 数组本身
const arr = [1,2,3]
const result = arr.map(item => {
    return item * 2
})

console.log(result) // [2,4,6]
  • reduce() 数组中的每个元素按序执行一个提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值
const arr = [1,2,3]
const result = arr.reduce((pre, current) => {
    return pre+current
})

console.log(result) // 6

4.遍历

  • in关键字
    • 主要用于遍历对象,判断某个属性在对象中是否存在,可以将对象的属性依次遍历出来
    • 用法:属性名 in 对象
    • 遍历的是属性名
const obj = {  
    name: 'zero',  
    age: 18,  
    gender: 'female'  
}  
for(let key in obj) {  
    console.log(key) // name age gender  
}
  • of关键字
    • 主要用于遍历数组
    • 用法:属性值 of 数组
    • 遍历的是属性值
const arr = ['dog', 'pig', 'cat']
for(const item of arr) {
  console.log(item)  // dog pig cat
}

本文完~