js数组方法整理

### 数组的删除(splice)
let arr = [1,2,3,4]
arr.splice(0,1)
console.log(arr) // [2,3,4]

>注释:splice方法会改变原数组
### 数组的删除(delete)
let arr = [1,2,3,4]
delete arr[0]
console.log(arr) // [empty,2,3,4]

> delete方法不会改变原数组,原数组的长度不会发生改变,只是会删除要删除的这一项
### join方法
let arr = [1,2,3,4]
console.log('arr.join', arr.join('.')); //1.2.3.4
console.log('arr',arr) // [1,2,3,4]

> join不会改变原数组
### push方法
let arr = [1,2,3,4]
console.log('arr.push', arr.push(6)); // 5(返回数组的长度)
console.log('arr',arr) // [1,2,3,4,6]

> push会改变原数组
### pop方法
let arr = [1,2,3,4]
console.log('arr.pop', arr.pop()); // 4(返回被删除的项)
console.log('arr',arr) //  [1, 2, 3]

> pop会改变原数组
### shift方法
let arr = [1,2,3,4]
console.log('arr.shift', arr.shift()); // 1(删除数组第一项)
console.log('arr',arr) // [2,3,4]

> shift会改变原数组
### unshift方法
let arr = [1,2,3,4]
console.log('arr.unshift', arr.unshift(9,8)); // 6(返回数组长度)
console.log('arr',arr) // [9, 8, 1, 2, 3, 4]

> unshift会改变原数组
### sort方法
let arr = [8,3,5,9,4,2]
console.log('arr.sort', arr.sort()); // [2, 3, 4, 5, 8, 9]
console.log('arr.sort', arr.sort((n1,n2) =>{
	return n1-n2
})); // [2, 3, 4, 5, 8, 9] (可以传入函数  n1 - n2代表从小到大排序)
console.log('arr.sort', arr.sort((n1,n2) =>{
	return n2-n1
})); // [9, 8, 5, 4, 3, 2] (可以传入函数  n2 - n1代表从大到小排序)
console.log('arr',arr) // [2, 3, 4, 5, 8, 9]

> sort会改变原数组
### reverse方法
let arr = [1,2,3,4]
console.log('arr.reverse', arr.reverse()); // [4,3,2,1]
console.log('arr',arr) // [4,3,2,1]

> reverse会改变原数组
### concat方法
let arr = [1,2,3]
console.log('arr.concat', arr.concat(4,5)) // [1, 2, 3, 4, 5]
console.log('arr',arr) // [1,2,3]

> concat不会改变原数组
### slice方法
let arr = [1,2,3,4,5,6,7]
console.log('arr.slice', arr.slice(1)) // [2, 3, 4, 5, 6, 7] (从下标1的位置截取到最后)
console.log('arr.slice', arr.slice(1,3)) // [2, 3] (从下标1的位置截取到下标3的位置 --包头不包尾)
console.log('arr.slice', arr.slice(1,-1)) // [2, 3, 4, 5, 6] (传入的参数为负数情况下,则用数组的长度加上负数作为参数,arr.slice(1,6))
console.log('arr.slice', arr.slice(-4,-1)) // [4, 5, 6] (传入的参数为负数情况下,则用数组的长度加上负数作为参数,arr.slice(3,6))
console.log('arr',arr) // [1,2,3,4,5,6,7]

> slice不会改变原数组
### indexOf()方法
let arr = ['a','b','c','d','e','f']
console.log('arr.indexOf()', arr.indexOf('b')) // 1(查找当前参数的下标)

let arr1 = ['a','b','c','d','e','f','b']
console.log('arr.indexOf', arr1.indexOf('c',3)) // -1(第一个参数代表要找的字符,第二个参数代表从当前参数位置查找)
### lastIndexOf()方法
let arr = ['a','b','c','d','e','f','b']
console.log('arr.lastIndexOf', arr.lastIndexOf('b')) // 6

let arr1 = ['a','b','c','d','e','f','b']
console.log('arr.lastIndexOf', arr1.lastIndexOf('c',3)) // 2(从后往前找,第一个参数代表要找的字符,第二个参数代表从当前参数位置查找)

let arr2 = ['a','b','g','d','e','c','b']
console.log('arr.lastIndexOf', arr2.lastIndexOf('c',3)) // -1
### some()方法
let arr = [1,2,3,4,5]
let a = arr.some((item) => {
	return item > 3
})
console.log('a:', a); // true
console.log('arr: ', arr); // [1,2,3,4,5]

> some不会改变原数组
### every()方法
let arr = [1,2,3,4,5]
let a = arr.every((item) => {
	return item > 3
})
console.log('a:', a); // false
console.log('arr: ', arr); // [1,2,3,4,5]

> every不会改变原数组
### filter()方法
let arr = [1,2,3,4,5]
let a = arr.filter((item) => {
	return item > 3
})
console.log('a:', a); // [4,5]
console.log('arr: ', arr); // [1,2,3,4,5]

> filter不会改变原数组
### map()方法
let arr = [1,2,3,4,5]
let a = arr.map((item) => {
	return item * 3
})
console.log('a:', a); // [3,6,9,12,15]
console.log('arr: ', arr); // [1,2,3,4,5]

> map不会改变原数组
### reduce()方法
#### 一元数组求和
let arr = [1,2,3,4,5]
let a = arr.reduce((pre,cur,index,array) => {
	return pre + cur
})
console.log('a:', a); // 15
console.log('arr: ', arr); // [1,2,3,4,5]

#### 对象数组求和
let arr1 = [{num:1},{num:2},{num:3}]
let a = arr.reduce((pre,cur,index,array) => {
	return pre + cur.num
},0)
console.log('a:', a); // 6

#### 求最大值,最小值
let arr1 = [1,3,5,6,4,8]
let max = arr.reduce((pre,cur,index,array) => pre > cur?pre:cur)
let min = arr.reduce((pre,cur,index,array) => pre < cur?pre:cur)
console.log('max:', max); // 8
console.log('min:', min); // 1

#### 计算数组中每个元素出现的次数
let arr = [1,2,1,5,1,2,3,6,4,1,2,5,3,3]
let a = arr.reduce((pre,cur,index,array) => {
	if(cur in pre){
		pre[cur]++
	}else{
		pre[cur] = 1
	}
	return pre
},{})

#### 数组去重
let arr = [1,2,1,5,1,2,3,6,4,1,2,5,3,3]
let a = arr.reduce((pre,cur,index,array) => {
	if(!pre.includes(cur)){
		pre.push(cur)
	}
	return pre
},[])

#### 对象数组去重
let arr = [{num:1},{num:1},{num:3}]
let obj = {}
let a = arr.reduce((pre,cur,index,array) => {
	obj[cur.num] ? "": (obj[cur.num] = true && pre.push(cur))
	return pre
},[])

> reduce不会改变原数组
### forEach()方法
let arr = [{
        name:1,
        connect:1
      },{
        name:2,
        connect:2
      },{
        name:3,
        connect:3
      }]
      let arr1 = arr.forEach(element => {
        element.name = element.name*2
        element.connect = element.connect*3
      });
      console.log('arr: ', arr);
       // [{"name": 2,"connect": 3},{"name": 4,"connect": 6},{"name": 6,"connect": 9}]
      console.log('arr1: ', arr1); // undefined
      
//一元数组的表示
let arr = [1,2,3,4,5]
      let arr1 = arr.forEach((element,arr_index,array) => {
        console.log('element: ', element);
        array[arr_index] = element * 2
      });
      console.log('arr: ', arr); // [2, 4, 6, 8, 10]
      console.log('arr1: ', arr1); //undefined


> forEach会改变原数组 没有返回值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值