数组大白话理解就是使用一个变量名来存一系列的值。
一、创建数组,获取数组的长度及遍历:
let arr1 = new Array();
let arr2 = new Array(3);
let arr3 = new Array('apple','banana','grape')
// length属性用来获取数组的长度
console.log(arr1.length) // 0
console.log(arr2.length) // 3
console.log(arr3.length) // 3
// forEach不遍历内部为空的数组,函数内的代码也不会执行
arr2.forEach(item => {
console.log(item) // 此代码不执行
})
// for循环将打印出三个undefined
for(let i = 0; i< arr2.length; i++) {
console.log(arr2[i]) // undefined
}
// 数组不为空时
arr3.forEach(item => {
console.log(item) // apple, banana, grape
})
for(let i = 0; i< arr3.length; i++) {
console.log(arr3[i]) // apple, banana, grape
}
二、数组的常见操作:(添加、删除、修改)
添加元素:
let myArray = ['apple','banana','grape']
console.log('原数组:',myArray); // ["apple", "banana", "grape"]
myArray.push('watermelon');
console.log('用push在数组后面插入元素:',myArray); // ["apple", "banana", "grape", "watermelon"]
myArray.unshift('longan');
console.log('用unshift在数组前面插入元素:',myArray); // ["longan", "apple", "banana", "grape", "watermelon"]
myArray.splice(2,0,'mango');
console.log('用splice在数组指定位置插入元素:',myArray); // ["longan", "apple", "mango", "banana", "grape", "watermelon"]
删除元素:
// 一般数组
let myArray = ["longan", "apple", "mango", "banana", "grape", "watermelon"]
// 第一种 delete 方法
delete myArray[0]
console.log(myArray) // [empty, "apple", "mango", "banana", "grape", "watermelon"]
// 第二种 栈方法 pop 返回数组最后一项,数组长度减1
let simple = myArray.pop()
console.log(simple) // watermelon
console.log(myArray) // [empty, "apple", "mango", "banana", "grape"]
// 第三种 队列方法 先进先出 返回数组第一项,数组长度减1
let item = myArray.shift()
console.log(item) // undefined
console.log(myArray) // ["apple", "mango", "banana", "grape"]
// 第四种 操作方法 第一个参数为要删除第几个元素,第二个参数大于0时表示要删除的几个元素
let str = myArray.splice(0, 1);
console.log(str); // ["apple"]
console.log(myArray); // ["mango", "banana", "grape"]
// 当数组元素为对象时,可以参考下面的两种方式
let myArray = [{id: 1,name: '张三'}, {id:2, name: '里斯'}, {id: 3, name: 'nars'}]
// 第一种 利用forEach循环
myArray.forEach(function(item, index) {
if(item.id == 2) {
myArray.splice(index, 1);
}
});
console.log(myArray) // [{"id": 1,"name": "张三"},{"id": 3,"name": "nars"}]
// 第二种 利用循环中的filter方法
myArray = myArray.filter(function(item) {
return item.id != 1
});
console.log(myArray); // [{"id": 3,"name": "nars"}]
修改元素:
let myArray=["longan", "apple", "mango", "banana", "grape", "watermelon"]
myArray.splice(0,1, 'orange')
console.log(myArray) // ["orange", "apple", "mango", "banana", "grape", "watermelon"]
以上可以发现:splice()可以对数组实现添加、修改、删除操作。
三、其它操作
方法名 | 描述 |
reduce | 函数累加器,比较难理解,下面一段代码详解 |
concat | 连接2个或更多数组,并返回结果 |
every | 对数组中对每一项运行给定函数,如果该函数对每一项都返回true,则返回true,否则返回false |
join | 将所有的数组元素连接成一个字符串 |
indexOf | 返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1 |
map | 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组 |
reverse | 反转数组中的元素 |
slice | 传入索引值,将数组里对应索引范围内的元素作为新数组返回 |
some | 对数组中的每一项运行给定函数,如果任一项返回 true,则结果为true, 并且迭代结束 |
sort | 按照字母顺序对数组排序 |
toString | 将数组转为字符串返回 |
// reduce 对于空数组不会执行回调函数
arr.reduce(callback[, initialValue])
// initialValue 就是第一次执行reduce中的函数时, pre的值;默认pre第一次执行时为0
// 下面以数组扁平化为例,initialValue值为[]
let arr = [1, 2, [3, 4]]
const newArr = function (arr) {
return arr.reduce((result, item) => result.concat(Array.isArray(item) ? newArr(item) : item), [])
}
console.log(newArr(arr)) // [1, 2, 3, 4]
欢迎大家评论,一起补充完善数组的内容!