数组常用方法

一、数组

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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值