一、数组
1.将数组转化为字符串
1.1 toString()
let nameArr = ['张三','李四','王五'];
let names = nameArr.toString();
console.log(names) // 张三,李四,王五
1.2 join()
**join()**与toString()功能类似,但是可以规定以何种分隔符来分割数组
let nameArr = ['张三', '李四', '王五'];
let names = nameArr.join('@');
console.log(names) // 张三,李四,王五
2.将字符串转化为数组
split(),可以规定以何种分隔符来分割字符串
let names = '张三,李四,王五'
let nameArr = names.split(',')
console.log(nameArr)
3.添加数组
push(), unshift(), splice()
3.1 push()
push(),是在数组的末尾添加一项或多项,并返回新的数组长度
onst nameArr = ['张三', '李四', '王五'];
nameArr.push('王美丽')
console.log(nameArr) // ["张三", "李四", "王五", "王美丽"]
3.2 unshift()
unshift(),是在数组的开头添加一项或多项,并返回新的数组长度
let nameArr = ['张三', '李四', '王五'];
nameArr.unshift('王美丽')
console.log(nameArr) // ["王美丽", "张三", "李四", "王五"]
3.3 splice()
splice(),向(从)数组中添加(删除)项目,然后返回被删除的项目
添加
let nameArr = ['张三', '李四', '王五'];
nameArr.splice(1, 0, '小明', '小陈')
console.log(nameArr) // ["张三", "小明", "小陈", "李四", "王五"]
删除
let nameArr1 = ['张三', '李四', '王五', '王美丽'];
let removedArr = nameArr1.splice(1, 2, '小明', '小陈')
console.log(nameArr1) // ["张三", "小明", "小陈", "王美丽"]
console.log(removedArr) // 返回的是被删除的数组. ["李四", "王五"]
// splice()有三个参数
//1. 添加/删除项目的位置,使用负数可从数组结尾处规定位置.(必选参数)
//2. 要删除的项目数量。如果设置为 0,则不会删除项目.(必选参数)
//3. 向数组添加的新项目.(可选参数)
3.4 length属性
let nameArr = ['张三', '李四', '王五'];
nameArr[nameArr.length] = '王美丽'
console.log(nameArr) // ["张三", "李四", "王五", "王美丽"]
4.删除数组
4.1 length属性
let nameArr = ['张三', '李四', '王五'];
nameArr.length = 2
console.log(nameArr) //["张三", "李四"]
4.2 delete关键字
let nameArr = ['张三', '李四', '王五'];
delete nameArr[0];
console.log(nameArr) // [undefined, "李四", "王五"]
// delete 可以删除指定下标的项,但是数组长度不会变化,只是被删除的项变成undefined
4.3 pop()
let nameArr = ['张三', '李四', '王五'];
nameArr.pop()
console.log(nameArr) // ["张三", "李四"]
// pop()可以删除数组的最后一位
4.4 shift()
let nameArr = ['张三', '李四', '王五'];
nameArr.shift()
console.log(nameArr) // ["李四", "王五"]
//shift()可以删除数组的首位,返回值是被删除的元素,这里是 '张三'
4.5 splice()
let nameArr1 = ['张三', '李四', '王五', '王美丽'];
let removedArr = nameArr1.splice(1, 2, '小明', '小陈')
console.log(nameArr1) // ["张三", "小明", "小陈", "王美丽"]
console.log(removedArr) // 返回的是被删除的数组. ["李四", "王五"]
// splice()有三个参数
//1. 添加/删除项目的位置,使用负数可从数组结尾处规定位置.(必选参数)
//2. 要删除的项目数量。如果设置为 0,则不会删除项目.(必选参数)
//3. 向数组添加的新项目.(可选参数)
5.数组排序
5.1 sort()
let nameArr = ['Kane', 'Alice', 'Cain', 'Bob']
nameArr.sort();
console.log(nameArr) //["Alice", "Bob", "Cain", "Kane"]
6.删除数组中的undefined元素
6.1 循环数组找到undefined的值利用slice删除
function removeEmptyArrayEle(arr){
for(var i = 0; i < arr.length; i++) {
if(arr[i] == "undefined") {
arr.splice(i,1);
i = i - 1; // i - 1 ,因为空元素在数组下标 2 位置,删除空之后,后面的元素要向前补位,
// 这样才能真正去掉空元素,觉得这句可以删掉的连续为空试试,然后思考其中逻辑
}
}
return arr;
}
6.2 使用Boolean过滤数组中的所有假值。包括undefined,NaN,0,false
let compact = arr => arr.filter(Boolean)
compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN, 's', 34])
7.遍历数组的方法
7.1 for循环
let arr = [1,2,3,4,5,6,7]
for (let i=0; i<arr.length; i++){
console.log(arr[i] + '---' + i)
}
7.2 foreach循环
没有返回值,对原数组没有影响,总是返回undefined
let arr = [1,2,3,4,5,6,7]
let sum =0
arr.forEach((item,index,arr) => {
if (item % 2 == 0){
return sum +=item
}
})
console.log(sum) // 12
7.3 map循环
不改变原数组,但是会根据原数组经过某种转化,产生新的数组
let arr = [1,2,3,4,5,6,7]
let res = arr.map(item => {
return item * 10
})
console.log(res) // [10, 20, 30, 40, 50, 60, 70]
7.4 for – of 循环
循环数组的每一项
let arr = [1,2,3,4,5,6,7]
for (let item of arr ){
console.log(item)
}
7.5 for – in 循环
循环数组的下标
let arr = [1,2,3,4,5,6,7]
for (let item in arr ){
console.log(item)
}
7.6 filter遍历
不会改变原数组,会返回新的数组
let arr = [1,2,3,4,5,6,7]
let res =arr.filter(item => {
if (item % 2 ==0){ // 符合条件会返回
return item
}
})
console.log(res) // [2,4,6]
7.7 every遍历
判断数组是否全部满足某种条件,全部满足为true 否则是fasle
let arr = [1,2,3,4,5,6,7]
let res = arr.every(item => {
return item > 2
})
console.log(res) // false
7.8 some遍历
判断数组任意一项是否满足某种条件,有一项满足为true 否则是fasle
let arr = [1,2,3,4,5,6,7]
let res = arr.some(item => {
return item > 2
})
console.log(res) // true
7.9 reduce累加器
将指定数组从左到右累加,数组的项为Number类型
let arr = [1,2,3,4,5,6,7]
let res =arr.reduce((a,b) => { // a:上一次的值; b: 当前值
return a+b
},0) // 初始值为0
console.log(res) //28
8. 数组去重
8.1 Set(ES6)
function unique(arr) {
return Array.from(new Set(arr))
}
// 或者
const unique = arr => [...new Set(arr)]
//测试
let arr = [1,2,3,1]
unique(arr) //[1,2,3]
8.2 reduce
function unique (arr) {
return arr.sort().reduce((acc, cur) => {
if (acc.length === 0 || acc[acc.length - 1] !== cur) {
acc.push(cur);
}
return acc
}, [])}
;
// 测试
let arr = [1, 2, 2, 3]
unique(arr); // [1, 2, 3]
8.3 filter
function unique(arr) {
return arr.filter( (element, index, array) => {
return array.indexOf(element) === index
})
}
// 测试
var arr = [1, 2, 2, 3]
unique(arr); // [1, 2, 3]