一.可以将数组转为字符串的方法

1.toString()

toString()方法会把一个数组转为字符串,并且用逗号隔开

let arr = ['1','2','3']
        let str = arr.toString()
        console.log(str);        //  1,2,3
        console.log(typeof str); // string

jquery 逗号分割字符串分割数组 js数组以逗号隔开_数组

2. String()

let arr = ['1','2','3']
        let str = String(arr)
        console.log(str);  // 1,2,3
        console.log(typeof str); // string

jquery 逗号分割字符串分割数组 js数组以逗号隔开_jquery 逗号分割字符串分割数组_02

 3.join(连接符) -- 默认使用英文逗号, 作为连接符,此时和 toString()的效果是一致的。

let arr = ['1','2','3']
        let str = arr.join()
        let str1 = arr.join('-') // 也可以使用不同的连接符
        console.log(str);  // 1,2,3
        console.log(str1);  // 1-2-3 
        console.log(typeof str); // string

jquery 逗号分割字符串分割数组 js数组以逗号隔开_jquery 逗号分割字符串分割数组_03

 二.数组元素的添加和删除

数组方法

作用

原数组是否改变

push()

向数组的最后面插入一个或多个元素,返回结果为新数组的长度

会改变原数组

pop()

删除数组中的最后一个元素,返回结果为被删除的元素

会改变原数组

unshift()

在数组最前面插入一个或多个元素,返回结果为新数组的长度

会改变原数组

shift()

删除数组中的第一个元素,返回结果为被删除的元素

会改变原数组

splice()

从数组中删除或替换指定的一个或多个元素,返回结果为被删除元素组成的新数组

会改变原数组

concat()

合并数组:连接两个或多个数组,返回结果为新的数组

不会改变原数组

slice()

从数组中提取指定的一个或多个元素,返回结果为新的数组

不会改变原数组

 在这重点说splice()和slice(),这俩很容易搞混

1.splice()

括号中有两个参数,(开始索引<包含>,删除几个)

let arr = ['张三','里斯','王五','赵六']
 let arr1 = arr.splice(0,1)
 let arr2 = arr.splice(0,2) 
 console.log(arr1);  // ['张三']
 console.log(arr2);  //  ['张三', '里斯']

jquery 逗号分割字符串分割数组 js数组以逗号隔开_jquery 逗号分割字符串分割数组_04

还有第三个参数,(开始索引<包含>,删除几个,替换元素

let arr = ['张三','里斯','王五','赵六']
        let arr3 = arr.splice(1,1,'小明') // 从索引为1的地方删除一个元素,替换成小明
        console.log(arr3); // ['里斯']
        console.log(arr) // ['张三', '小明', '王五', '赵六']

 

jquery 逗号分割字符串分割数组 js数组以逗号隔开_数组_05

2. slice()

他也有俩个参数(开始索引<包含>,结束索引<不包含>)

let arr = ['张三','里斯','王五','赵六']
        let arr1 = arr.slice(0,1)  // 从索引为0的位置截取到索引为 1 的位置,但是不包含索引为1的元素
        console.log(arr1); //  截取出来的元素 ['张三']

 

jquery 逗号分割字符串分割数组 js数组以逗号隔开_jquery 逗号分割字符串分割数组_06

 eg:一维数组转二维数组

let arr = ['1','2','3','4','5','6','7','8','9','10']
        let arr1 = arr.slice(0,5)
        let arr2 = arr.slice(5)
        let arr3 = []
        arr3.push(arr1,arr2)
        console.log(arr3)

 

jquery 逗号分割字符串分割数组 js数组以逗号隔开_返回结果_07

 eg2:手机号截取=>184****6765

let str = 18411111111
        //注意类型,先得转成字符串,才能分割
        let str1 = str.toString().slice(0,3) + '****' + str.toString().slice(-4)
        console.log(str1);

jquery 逗号分割字符串分割数组 js数组以逗号隔开_javascript_08

三.遍历数组

常用的遍历数组的方法有forEach()map()filter()reduce()for循环for of

1.forEach()

首先forEach()没有返回值,所以接收到的市undefined

let arr = [1,2,3]
        arr.forEach((it,idx)=>{
            it = it * 2
        })
        console.log(arr); // [1, 2, 3]

这种写法改变不了原数组的,如果您想用forEach()改变原数组的话,可以试试下面这种方法

let arr = [1,2,3]
            arr.forEach((it,idx)=>{
               arr[idx] = arr[idx] * 2 
            })
            console.log(arr); // [2,4,6]

2.map()

主要是映射出新数组

let arr = [1,2,3]
        let arr1 = arr.map((it,idx)=>{
            return it * 2  
        })

        //或简写
        let arr1 = arr.map((it,idx)=>it * 2)

        console.log(arr1); // [2, 4, 6]
//把每一项的id放到一个新数组中       
         let arr = [{id:11,name:'张三'},{id:22,name:'里斯'},{id:33,name:'王五'}]

        let ids = arr.map((it,idx)=>it.id)
        console.log(ids); // [11, 22, 33]

有一个使用场景,给数组的每一项加一个type,并且每一项的键名为url

let arr3 = ['xxx','xxx','xxx']
        //第一项的type是video
        let arr1 = arr3.map((it,idx)=>{return {type:idx == 0?'video':image',url:it}})
        console.log(arr1);

jquery 逗号分割字符串分割数组 js数组以逗号隔开_javascript_09

 3.filter()

过滤出及格的人

let arr = [{id:11,name:'张三',score:60},{id:22,name:'里斯',score:59},{id:33,name:'王五',score:90}]
        //过滤出及格的人
        let arr1 = arr.filter((it,idx)=>it.score >=60)
        console.log(arr1);

jquery 逗号分割字符串分割数组 js数组以逗号隔开_javascript_10

 过滤出及格的id

let arr = [{id:11,name:'张三',score:60},{id:22,name:'里斯',score:59},{id:33,name:'王五',score:90}]
        //过滤出及格的人的id
        let ids = arr.filter((it,idx)=>it.score >= 60).map((it,idx)=>it.id)
        console.log(ids);

 

jquery 逗号分割字符串分割数组 js数组以逗号隔开_字符串_11

四.查找数组的元素

列几个常用的吧

方法

作用

indexOf()

从前往后索引,检索一个数组中是否含有指定的元素

includes()

数组中是否包含指定的内容

find()

找出第一个满足「指定条件返回 true」的元素,如果没找到,则返回 undefined

findIndex()

找出第一个满足「指定条件返回 true」的元素的index,没找到返回 -1

every()

确保数组中的每个元素都满足「指定条件返回 true」,则停止遍历,此方法才返回 true

some()

数组中只要有一个元素满足「指定条件返回 true」,则停止遍历,此方法就返回 true

1.indexOf()

//假如这是过滤出来的id
        let ids = [12,34,76,98,66]
        //查找过滤出的id中有id为76 的
        let idx = ids.indexOf(76)
        console.log(idx); // 返回索引2,说明有
        
        let idxs = ids.indexOf(99)
        console.log(idxs); // 返回-1,说明没找到

 对字符串的查找

let str = '树上有7只猴,地上有1只猴'

        let str1 = str.indexOf(7)
        let str2 = str.indexOf('7')
        console.log(str1,str2); // 3 3

可以看出来,字符串的indexOf()方法,对数据进行了隐式类型转换的,如果参数是数值类型,则他会把查找的数值转为字符串类型,为什么呢?因为js底层代码中字符串的indexOf()方法使用的是==进行比较判断

 对数组的查找

let arr = [1,2,3,'4','5','6']
        let idx = arr.indexOf(4)
        let idxs = arr.indexOf('4')
        console.log(idx,idxs); // -1 3

数组类型的indexOf(),是不会进行隐式类型转换的,也就是说数组的js底层是用===严格比较的

 2.includes()

//过滤出的id
        let ids = [12,34,76,98,66]
        //查找数组中是否有id为34的元素
        let str1 = ids.includes(34)
        console.log(str1); // true

3.find()

let arr = [{id:1,name:'张三',score:30},{id:43,name:'里斯',score:68},{id:19,name:'王五',score:78},{id:87,name:'小明',score:90},]
       
        let str = arr.find((it,idx)=>it.id == 43)
        let str1 = arr.find((it,idx)=>it.id == 44)
        console.log(str,str1); // {id: 43, name: '里斯', score: 68}  返回的是item   undefined是没找到

4.findIndex()

let arr = [{id:1,name:'张三',score:30},{id:43,name:'里斯',score:68},{id:19,name:'王五',score:78},{id:87,name:'小明',score:90},]

        let idx  = arr.findIndex((item,index)=>item.id == 19)
        let idx1  = arr.findIndex((item,index)=>item.id == 88)
        console.log(idx,idx1); // 2是索引      -1是没找到

5.every()

let arr = [{id:1,name:'张三',score:30},{id:43,name:'里斯',score:68},{id:19,name:'王五',score:78},{id:87,name:'小明',score:90},]
        //判断是否都及格
        let str = arr.every((it,idx)=>it.score >= 60)
        console.log(str); // false

6.some()

let arr = [{id:1,name:'张三',score:30},{id:43,name:'里斯',score:68},{id:19,name:'王五',score:78},{id:87,name:'小明',score:90},]
        //判断是否有及格的
        let str = arr.some((it,idx)=>it.score >= 60)
        console.log(str); // true