什么是数组
- 数组是一个包含了多个值的对象,数组是一个特殊的对象,本质上两者没什么区别
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
}
本文完~