数据结构--数组常见操作

数组大白话理解就是使用一个变量名来存一系列的值。

一、创建数组,获取数组的长度及遍历:

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]

欢迎大家评论,一起补充完善数组的内容!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值