Array methods subtotal

168 阅读4分钟

1. .concat  合并数组 拼接数组 不影响原数组  返回新数组

let arr=[1,2,3,4,5]
let concatOne=arr.concat(1,2)  //[1,2,3,4,5,1,2]   不会进行覆盖
let concatTwo=arr.concat([1,2]) //  [1,2,3,4,5,1,2] 
console.log("arr",arr) //[1,2,3,4,5]

let a=1,b=2,c=[]
let concatArr=c.concat(a,b) // [1,2]   这样的方式比较麻烦 因为要先定义c  然后又定义concatArr

let arr=[1,2,3,4,5]
let concatArr=[].concat(arr) // [1,2,3,4,5]  
console.log("arr",arr) //[1,2,3,4,5]

2. .splice 删除数组中的元素并且可进行插入新元素(可不插入) 改变原数组   返回删除数组

splice(index,howmany,item1,.....itemx)

index:从什么地方进行删除(这里表示下标)

howmany:删除几个数

item1:插入的内容 可传可不传

不传元素:

let arr=[1,2,3,4,5,6,7,8]
let arrSplice=arr.splice(1,2)  // 从索引1开始删除删除  删除两个元素  返回的为[2,3]
console.log("arr",arr)  //  [1,4,5,6,7,8]

传元素:

let arr=[1,2,3,4,5,6,7,8]
let arrSplice=arr.splice(1,2,7,8,9)  // 从索引1开始删除 删除两个元素 插入元素7,8,9  返回的为删除的元素[2,3]
console.log("arr",arr) // [1,7,8,9,4,5,6,7,8]  //不会覆盖重复的元素

3. 删除数组元素

      3.1  .shift 前删 只会删除第一个元素 改变原数组  返回删除的元素( 不是数组)

let arr=[1,2,3,4,5]
let arrShift=arr.shift()  // 返回删除数组中的第一个元素 1
console.log("arr",arr)  // [2,3,4,5]

       3.2  .pop 尾删  只会删除最后元素 改变原数组 返回删除的元素( 不是数组)

let arr=[1,2,3,4,5]
let arrPop=arr.pop()   //返回删除数组中的最后一个元素  5
console.log("arr",arr)  // [1,2,3,4]

4.  数组插入元素

    4.1  .unshift 前插  改变原数组  返回原数组长度

let arr=[1,2,3,4,5,6,7,8]
let arrUnshift=arr.unshift(1,2,3,4)   //  返回原数组长度 12 
console.log("arr",arr) // [1,2,3,4,1,2,3,4,5,6,7,8] 重复不会覆盖

let arr=[1,2,3,4,5,6,7,8]
let arrUnshiftArr=arr.unshift([1,2])  // 返回原来数组长度 9
console.log("arr",arr)  //[[1,2],1,2,3,4,5,6,7,8] 

 4.2  .push  后插  改变原数组  返回原来数组长度

let arr=[1,2,3,4,5,6,7,8]
let arrPush=arr.push(1,2)  // 返回原数组长度 10
console.log("arr",arr)    // [1,2,3,4,5,6,7,8,1,2] // 重复不会覆盖

let arr=[1,2,3,4,5,6,7,8]
let arrPushArr=arr.push([1,2])  // 返回原来数组的长度  9
console.log("arr",arr)  // [1,2,3,4,5,6,7,8,[1,2]]

5  .join 用数组元素组成字符串  不改变原数组  返回新数组

let arr=[1,2,3,4,5,6,7,8]
let arrJoin=arr.join("")  //   字符串  "12345678"  
console.log("arr",arr)  // [1,2,3,4,5,6,7,8]

let arr=[1,2,3,4,5,6,7,8]
let arrJoin=arr.join()  // 什么都不传用"逗号"隔开 字符串"1,2,3,4,5,6,7,8"
console.log("arr",arr)  //  [1,2,3,4,5,6,7,8]

let arr=[1,2,3,4,5,6,7,8]
let arrJoin=arr.join("-") // 传"-"  结果为:字符串"1-2-3-4-5-6-7-8"
console.log("arr",arr)    // [1,2,3,4,5,6,7,8]

. String 或者 toString  不改变原数组  返回字符串

let arr=[1,2,[3,4,[5,6],7],8]
let arrStr=String(arr) // 1,2,3,4,5,6,7,8
let arrString=arr.toString()  // 1,2,3,4,5,6,7,8

but:  let myArr=[{join:"44",split:[1,2]}] 这样的形式不可以

拓展:如何数组呢 .split  不改变原数组  返回新数组

let arr=[1,2,3,4,5]
let arrJoin=arr.join("-")  // 字符串 "1-2-3-4-5"
let arrSplit=arrJoin.split("-")  //["1","2","3","4","5"] 如何把数组元素从字符串转为数字
let arrSplitNum=arrSplit.map(item=>+item)  // [1,2,3,4,5]
let arrSplitNum=arrSplit.map(item=>Number(item)) // [1,2,3,4,5]

从数组转为字符串再由字符串转为数组的步骤为:
let arr=[1,2,3,4,5]
let arrSplitNum=arrSplit.join("-").split("-").map(item=>+item) //[1,2,3,4,5]
let arrSplitNum=arrSplit.join("-").split("-").map(item=>Number(item)) // [1,2,3,4,5]
                arrSplit.join("").split("").map(item=>+item) //[1,2,3,4,5]
                arrSpli.join().split(",").map(item=>+item) //[1,2,3,4,5]

把嵌套多层数据变成一层

let arr=[1,2,[3,[4,5,[6,7]]],8]
let arrSring=String(arr) // 1,2,3,4,5,6,7,8  或者 let arrString=arr.toString()
let arrArr=arrString.split(",") // ["1","2","3","4","5"]
let arrA=arrArr.map(item=>+item) // [1,2,3,4,5]
let arrA=arrArr.map(item=>Number(item)) //[1,2,3,4,5]

最后步骤为:
let arr=[1,2,[3,[4,5,[6,7]]],8]
let arrA=String(arr).split(",").map(item=>+item)
let arrA=arr.toString().split(",").map(item=>Number(item))

but: let myArr=[{join:"44",split:[1,2]}]  这样的形式不可以