JavaScript数组方法

concat方法

数组中使用

  • 该方法可以用来拼接数组,并且不会改变原有数据,返回一个新的数组。
let newArr = arr.concat(arr2)
console.log(arr,arr2,newArr)
  • 将字符串增加到数组的后面


const newArr2 = arr.concat('2')
console.log(arr,newArr2)
  • 接受的参数不单为1个或单一的类型,它可以接受任意个参数,并且添加到数组中,类型可以是数组,字符串,对象等。


let newArr2 = arr.concat('2','a','asdas',[1,2,3,4],{a:1,b:2},null,false)
console.log(arr,newArr

splice()用于删除或是替换

  • 用于删除,arr.splice(pos,n),第一个参数表示删除的起始位置,第二个参数表示需要删除的个数。返回值为删除的数据,数据的类型为数组。


// 只使用第一个参数的时候,表示删除的数据从起始位置到数组的最后。
console.log(arr)
const len = arr.splice(1)
console.log(arr,len)
// 使用第二个参数
console.log(arr)
const len = arr.splice(1,5)
console.log(arr,len)
// 第三个参数为替换删除后的数据。即将第三个参数开始的数据填充到中间删除的部分。
console.log(arr)
const len = arr.splice(1,5,'----',[1,2,3],'-----',1,{a:1})
console.log(arr,len)
// 用于增加数据,只需要把第二个参数设置为0即可。此时返回值为空数组。

slice,抽取数组中的一段元素,不改变原数组,返回一个新数组


// slice中不携带参数,则用于元素的复制,浅克隆。
let newArr = arr.slice()
console.log(arr,newArr)
const newArr = arr.slice()
let brr = arr
brr[0] = 1
console.log(arr,brr,newArr)
// 使用两个参数
const newArr = arr.slice(2,5)
console.log(arr,newArr)

MDN:如果该元素是个对象引用 (不是实际的对象),slice 会拷贝这个对象引用到新的数组里。两个对象引用都引用了同一个对象。如果被引用的对象发生改变,则新的和原来的数组中的这个元素也会发生改变。对于字符串、数字及布尔值来说(不是 StringNumber 或者 Boolean 对象),slice 会拷贝这些值到新的数组里。在别的数组里修改这些字符串或数字或是布尔值,将不会影响另一个数组。
复制一段代码的时候arr.slice(start,end)
使用一个参数的时候,返回值为第一个参数标明的索引到最后。
两个参数的时候,抽取的数据包括了start但是没有包括end的数据。其中slice的第二个参数可以是负值(第一个参数也行),表示从后面往前数是第几个,从-1开始。
注意:如果参数不是整数,则是向下取整后的数。

map

map用来对数组种的每个元素进行相应的处理,返回值为一个数组。如果在map中没有进行相应的返回,默认返回undefined,map不会改变原来的数组。回调函数中使用三个参数(并非必须),第一个参数为数组的元素,第二个为对应的索引,第三个为原数组。

console.log(arr)
const x = arr.map((item,index)=>{
// 在这里面可以根据每个数组中的元素do something
     item = +1
})
console.log(x,arr)

参考MDN:不打算生成新数组或是没有从回调函数中返回值,则不应当使用map,数情况下只使用了第一个参数,但是在回调函数中,默认会传递多个参数。

console.log(['1','2','3'].map(parseInt))
// 这个是由于默认传入的参数除了数组元素外,还将索引传入了回调函数中,因此:
// 等价于
parseInt('1',0)
parseInt('2',1)
parseInt('3',2)

forEach


  • forEach的返回值总是undefined,除了抛出异常的情况下是无法终止或跳出循环的。
  • 一般情况下是不会改变原来的数组,但是在回调中对原来的数组进行操作会导致原来的数组改变。
  • 如果回调函数导致了原数组的改变,会影响到循环的次数。
arr = [1,2,3,4]
arr.forEach((item,index)=>{
    arr[index] += 1
})
console.log(arr)
暂无评论