数组的增添、删除
以下这些方法都是只改变原数组,不会产生新数组
push在数组末尾添加元素;unshift在数组开头添加元素;
let arr = [1,5,3,4,2];
arr.push(0)
arr.unshift(9)
console.log(arr); //[9,1,5,3,4,2,0]
pop( )删除末尾元素,shift( )删除开头元素;括号里都没有参数
let arr = [1,5,3,4,2];
arr.pop()
arr.shift()
console.log(arr); //[5,3,4]
数组的截取
1.slice:切割
既可以对数组元素进行切割,也可以对字符串切割
不改变原数组,产生一个新的数组
slice[start,end)前闭后开
var arr = [1,2,3,4,5];
console.log(arr.slice(1));//[2,3,4,5] 结束可以不写,默认取到最后一个元素
var str = "Hello,world!";
var sliceStr = str.slice(1,5);//ello (不包含end)
2.splice(从第几个元素开始,删除几个,在删除元素的位置添加的新元素)
var arr = [1,2,3,4,5];
// 添加
arr.splice(0,0,0);// [0,1,2,3,4,5]
// 修改
arr.splice(0,1,23);// [23,1,2,3,4,5]
// 删除
arr.splice(0,1);//[1,2,3,4,5]
数组的排序
- sort(a,b)
对数组进行排序 (a-b是升序,b-a降序),对原数组进行修改,不产生新数组
a,b可以接收对象,以此来将对象中的某个属性进行排序
let arr = [1,5,3,4,2];
arr.sort((a,b)=>{
return b - a;
})
- reverse()
数组的倒置,将数组元素倒置,改变的是原数组,不产生新数组
let arr = [1,5,3,4,2];
arr.reverse() //[2,4,3,5,1]
})
数组的遍历
-
普通for循环
let arr = ['hello','hi','66'] for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }
-
for…in 循环
index 就是数组索引,在遍历对象中是属性名
for (let index in arr) { console.log(arr[index]); }
-
for…of循环
item 就是每一个数组元素
for (let item of arr) { console.log(item); }
数组的拼接
-
concat()方法
会创建一个新数组
let arr = ['hello','hi','66'] let arr2 = ['world'] let arr3 = arr.concat(arr2) //['hello','hi','66','world']
-
展开语法
就是将数组中每一项都展开放入,只是复制数组,不会对原数组产生影响
let arr = [1,2,3]; let arr2 = [4,5,6]; let arr3 = [...arr,...arr2];
查找数组元素
-
indexOf() 若存在,返回元素索引 ,不存在,返回-1, 注意:若存在多个该元素,只返回第一个元素的索引
-
includes() 若存在,返回true,不存在,返回false
-
find () 查找数组中符合条件的第一个元素,符合就返回该元素,不符合,则返回undefined
find
函数接受一个回调函数作为参数,该回调函数会对数组中的每个元素进行测试。回调函数应该返回一个布尔值,表示当前元素是否满足条件。true代表找到了元素并结束循环,会返回符合条件的第一个元素。
如果是false,它会继续遍历数组直到找到一个满足条件的元素或者遍历完整个数组。
let arr = [{ id:1, name:'sjvn', age:'20' },{ id:2, name:'sj', age:'20' },{ id:3, name:'sj', age:'20' }] let obj = arr.find(function(item) { return item.id === 1 }) console.log(obj) //{ id:1, name:'sjvn', age:'20' }
forEach
forEach
函数只是对数组中的每个元素执行操作,它不会改变原数组的长度或内容。
-
forEach()需要一个函数作为参数 ,不可以被打断。forEach函数没有返回值
forEach(function(item, index, arr) { })
-
浏览器会在函数中传三个值,第一个值是当前数组的每一个元素,第二个值是索引,第三个值是整个数组对象
let arr = [1,2,3,4,5];
arr.forEach((item,index)=>{
console.log(item)
})
filter
filter()
方法接受一个回调函数作为参数,该回调函数会对数组中的每个元素进行测试。如果回调函数返回true
,则当前元素会被添加到新数组中;如果返回false
,则不会被添加。将每个item进行条件判断,为true时,会将该item加入到新数组
let arr = [9,0,10,13,4]
let newArr = arr.filter(function(item) {
return item % 2 === 0
})
console.log(newArr); //[0,10,4]
map
对数组中的每个元素执行指定的操作,并返回一个新的数组
let arr = [9,0,10,13,4]
let newArr = arr.map(function(item) {
return item * item
})
console.log(newArr);
reduce
对数组元素进行累加操作
reduce(function(prevalue,item){},0) 0是初始值,prevalue是上一次return出来的值
如果没有初始值,则数组第一个元素作为初始值
let arr = [9,0,10,13,4]
let newArr = arr.reduce(function(prevalue,item) {
return prevalue + item;
},0)
console.log(newArr);
let arr = [
{name: '笔记本',price: 19,count: 2},
{name: '铅笔',price: 19,count: 2},
{name: '橡皮',price: 19,count: 2},
]
let total = arr.reduce(function(prevalue, item) {
return prevalue + item.price * item.count
},0)
console.log(total);