1.reverse() 应用场景:后端有时候给我们的数据可能是按时间从小到大的,但我们给用户呈现的应该是最新的数据,所以需要翻转数组
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr.reverse()
console.log(arr); //[9, 8, 7, 6, 5, 4, 3, 2, 1]
2.暴力清空数组
let arr1 = [1, 23, 5, 6, 7, 8]
let str = '123456789'
console.log('arr1', arr1.length, 'str', str.length);
arr1.length = 1 //length给的长度多少,就只显示多少个数据
console.log(arr1); //[1]
arr1.length = 0 //数组可以使用length = 0来实现清空数组
console.log('清空数组后', arr1);
str.length = 0 //字符串使用length = 0 无效
console.log(str); //'123456789' 原字符串返回
3.数组转换字符串 join()
//join() 默认数组中每一项数据用逗号分隔
let arr2 = ['周杰伦', '刘德华', '华晨宇']
console.log(arr2.join()); //周杰伦,刘德华,华晨宇
console.log(arr2.join('-')); //周杰伦-刘德华-华晨宇
console.log(arr2.join('')); //周杰伦刘德华华晨宇
4.数组排序
let arr3 = [23, 54, 465, 324, 2133, 435, 65, 34, 657]
arr3.sort(function (a, b) {
return a - b //从大到小
})
console.log(arr3); //[23, 34, 54, 65, 324, 435, 465, 657, 2133]
arr3.sort(function (a, b) {
return b - a //从小到大
console.log(arr3); //[2133, 657, 465, 435, 324, 65, 54, 34, 23]
})
5.splice() 增删改
let arr4 = ['周杰伦', '周周', '阿强', '阿华', '66']
arr4.splice(1, 1, '华晨宇')
console.log(arr4); //['周杰伦', '华晨宇', '阿强', '阿华', '66']
6.交换数据
let a = 1;
let b = 10;
[a, b] = [b, a]
console.log(a, b); //10 1
7.展开运算符 ...
//(1).赋值地址,一改全改
let arr5 = [1, 2, 3, 4, 5, 6, 7]
let arr6 = arr5
arr6[0] = 100
console.log(arr5); //[100, 2, 3, 4, 5, 6, 7]
// (2).新建一个数组,堆空间另外开辟空间,不影响原对象的数据
let arr7 = [1, 2, 3]
arr7 = [...arr5] //赋值没有的
console.log(arr7); // [100, 2, 3, 4, 5, 6, 7]
arr7[0] = 5
console.log(arr7); //[5, 2, 3, 4, 5, 6, 7]
// (3)应用
let max = Math.max(...arr7) //这里只复制了arr7里面的数据
console.log(max); //7
console.log(Math.max.apply(Math, arr7)); //这里调用了apply方法,将this指向Math对象 //7
8.forEach() 遍历 注意:不改变原数组!!!
// (1)常规遍历方法
let arr8 = ['aa', 'bb', 'cc', 'dd', 'ff']
for (let i = 0; i < arr8.length; i++) {
console.log(i, arr8[i]);
}
// (2)forEach() 遍历
let newArr = []
arr8.forEach((item, i) => {
newArr.push(item + 10)
})
console.log(newArr);
9.map() 遍历 注意:与forEach()的区别在于,该方法会返回一个新数组
// 对原数组进行操作,返回操作完的数据
let arr9 = ['a', 'b', 'c', 'd', 'f']
let newArr1 = arr9.map(function (item, i) {
return item + '66'
})
console.log(newArr1);
// (1)案例1
let arr10 = [1, 2, 3, 4, 5, 6]
let newArr2 = arr10.map(function (item, i) {
return item + 10
})
console.log(newArr2);
// (2)案例二
let arr11 = ['13', '3', '79', '1', '10', '24', '78', '2']
let newArr3 = arr11.map(function (item, i) {
if (+item < 10) {
return '0' + item
}
return item
})
console.log(newArr3);
// (3)案例三
let arr12 = [{
name: '李狗蛋',
age: 16,
sex: '男'
}, {
name: '张翠花',
age: 20,
sex: '女'
}, {
name: '赵铁柱',
age: 25,
sex: '男'
}, {
name: '王小二',
age: 19,
sex: '男'
}]
let newArr4 = arr12.map(function (item, i) {
item.age += 1
// item.age++
return item
})
console.log(newArr4);
10.fliter 过滤
//案例1.去除数组中的空字符串
let arr14 = ['11','bb','dd','','','adsf','']
let newArr6 = arr14.filter(function(item,i){
return item!==''
})
console.log(newArr6)
//案例2.去除数组中的空字符串以及0值
let arr15 = ['aa', 'bb', 'ccc', '', 0, '6566', 0, '']
let newArr7 = arr15.filter(function (item, i) {
return item !== '' && item !== 0
})
console.log(newArr7);
//案例3.数组去重
let arr13 = [1, 2, 1, 3, 4, 4, 5, 6, 0, 6, 7, 7, 8, 88, 9, 9]
let newArr5 = arr13.filter(function (item, i) {
return arr13.indexOf(item) === i //选出数组中数据出现第一次
})
console.log(newArr5); //[1, 2, 3, 4, 5, 6, 0, 7, 8, 88, 9]