关于vue中使用的原生数组的常用方法

关于vue中使用的原生数组的常用方法

变更方法

Vue 将被侦听的数组的变更方法进行了包裹,所以它们也将会触发视图更新。这些被包裹过的方法包括:

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()
push()

​ 是向数组的末尾推送元素

​ 返回的是新数组的长度

​ 推送的可以是数组,对象,一些其他元素–如下

<script>
     var arr = [3,34,12,31,45]
     var arr2 = [1,2,5]
     var obj = {arr1:2,arr2:'nihao'}
     var b= 4;
     arr.push(b)
     console.log(arr);// [3, 34, 12, 31, 45, 4]
     var add = arr.push(4,5)
     console.log(arr)//[3, 34, 12, 31, 45, 4, 4, 5]
     arr.push(arr2)
	 console.log(add);//8
     console.log(arr)//[3, 34, 12, 31, 45, 4, 4, 5, Array(3)]
     arr.push(obj)
     console.log(arr)// [3, 34, 12, 31, 45, 4, 4, 5, Array(3), {…}]
  </script>
pop()

​ 是把数组中的最后一个元素从数组中去除

​ 此函数的返回值是去除的那个元素

 var arr = [3,34,12,31,45]
 var arrre = arr.pop()
 console.log(arr);//[3, 34, 12, 31]
 console.log(arrre);//45
shift()

​ 是把数组中的第一个元素删除

​ 返回的是删除的那个元素

var arr = [3,34,12,31,45]
var del = arr.shift()
console.log(arr);// [34, 12, 31, 45]
console.log(del);//3
unshift()

​ 是向数组索引为0的位置添加元素

​ 返回值是新数组的长度

var arr = [3,34,12,31,45]
var add =  arr.unshift(45)
console.log(arr);//[45, 3, 34, 12, 31, 45]
console.log(add);//6
splice()

​ 可以删除数组中的元素,也可以向数组中添加元素,一举两得

​ 然后返回被删除的项目。该方法会改变原始数组

​ 删除元素返回的是一个数组

​ 添加元素返回的是一个空值

arrayObject.splice(index,howmany,item1,.....,itemX)

​ index是规定添加或者删除元素的位置,使用的是负数的话是从数组的最后一个元素开始查的

​ howmany:规定删除元素的个数

​ item1,…,itemX:是添加的元素

var arr = [3,34,12,31,45]
arr.splice(0,0,1,2,3)//在索引为0的地方开始添加
console.log(arr);//[1, 2, 3, 3, 34, 12, 31, 45]
var add = arr.splice(1,0,89)//在索引为1的地方添加
console.log(arr);//[1, 89, 2, 3, 3, 34, 12, 31, 45]
console.log(add);//[] 说明没有返回值
var del =  arr.splice(1,1)//从索引为1的位置开始删除
console.log(arr);//[1, 2, 3, 3, 34, 12, 31, 45]
console.log(del);//[89] 返回的是删除的值,是一个数组
sort()

​ sort(fun(a,b)) 方法用于对数组中的元素进行排序

​ fun(a,b) 中的a,b代表数组的前一个元素和后一个元素

​ 在使用的时候 a-b 代表 排列的是从小到大

​ 在使用的时候 b-a 代表 排列的是从大到小

var arr = [3,34,12,31,45]
    arr.sort()
    console.log(arr);//[12, 3, 31, 34, 45]
    arr.sort((a,b)=>{
      return a-b
    })
    console.log(arr);//[3, 12, 31, 34, 45]
    arr.sort((a,b)=>{
      return b-a
    })
    console.log(arr);//[45, 34, 31, 12, 3]
reverse()

​ 数组反转:颠倒数组中元素的位置

​ 该方法会改变原来的数组,而不会创建新的数组。

	var arr = [3,34,12,31,45]
    var arr1 = arr.sort()
    console.log(arr1);//接收排序后的数组,和arr的值相同
    console.log(arr);//[12, 3, 31, 34, 45]
    arr.sort((a,b)=>{
      return a-b
    })
    console.log(arr);//[3, 12, 31, 34, 45]
    arr.sort((a,b)=>{
      return b-a
    })
    console.log(arr);//[45, 34, 31, 12, 3]

替换数组

变更方法,顾名思义,会变更调用了这些方法的原始数组。相比之下,也有非变更方法,例如 filter()concat()slice()。它们不会变更原始数组,而总是返回一个新数组。当使用非变更方法时,可以用新数组替换旧数组:

​ filter():过滤,可以过滤数组中的元素,还可以作为过滤器使用

​ 会返回一个新数组,新数组中包含符合条件的所有元素,

array.filter(function(currentValue,index,arr){}, thisValue)

​ 函数方法中的参数意思:

​ currentValue:当前值

​ index:数组的下标

​ arr:是一个数组

​ thisValue:可以省略,是指定this的指向

​ 函数方法中有一个返回值-且返回值后面跟的是一个条件且条件的结果是布尔值

   var arr = [3,34,12,31,45]
    var arr1 = arr.filter(function(val,index,arr){
        return val>13
    })
    console.log(arr);//[3, 34, 12, 31, 45] 原数组未改变
    console.log(arr1);// [34, 31, 45]
    var arr2 = arr.filter(function(val,index,arr){
        return val*2 > 33
    })
    console.log(arr2);//[34, 31, 45]
concat()

​ 该方法用于连接两个或者多个数组

​ 该方法不会改变原有的数组,而仅仅会返回连接数组的一个副本

​ 可以把concat(a,b)中的参数拼接到数组中,a和b可以是数组,也可以是字符串

    var arr = [3,34,12,31,45]
    var arr1 = [6,7,8,9]
    var arr2 = [61,71,81,91]
    var newarr = arr.concat(2,4)//拼接concat和push的差异,push会改变原数组
    console.log(arr);//[3, 34, 12, 31, 45]
    console.log(arr1);//[3, 34, 12, 31, 45, 2, 4]
    var newarr1 = arr.concat(arr1)//相当于把arr1拼接到arr上,原数组不变返回一个新数组
    console.log(arr);//[3, 34, 12, 31, 45],原数组未发生改变
    console.log(newarr1);// [3, 34, 12, 31, 45, 6, 7, 8, 9]
    var newarr2 = arr.concat(arr1,arr2)
    console.log(newarr2);//[3, 34, 12, 31, 45, 6, 7, 8, 9, 61, 71, 81, 91]
slice()

​ 用于从已有的数组中选出选定的数组元素

​ slice(start,end)

​ start,指定数组元素从何处开始

​ end:指定数组元素从何处结束

​ 如果只写一个参数,就是从这个参数开始一直到最后

var arr = [3,34,12,31,45]
var newarr = arr.slice(2)
console.log(arr);//[3, 34, 12, 31, 45]
console.log(newarr);// [12, 31, 45]
var newarr1 = arr.slice(3)
console.log(newarr1);// [31, 45]
var newarr2 = arr.slice(2,4)
console.log(newarr2);//[12, 31]

补充数组的其他方法

arr.some()

​ 用于检测数组中的元素是否满足指定的条件

​ 如果满足指定的条件的话就返回true 如果都不满足指定的条件则返回false

​ 当检测出来第一个元素符合这个条件的时候就直接返回true后面的元素就不在判断

​ some() 不会对空数组进行检测。
​ some() 不会改变原始数组。

array.some(function(currentValue,index,arr),thisValue)

​ currentValue:当前数组的元素

​ index:当前数组的索引值

​ arr:当前数组

var arr = [3,34,12,31,45]
var flag = arr.some((val)=>{
  return val>12
})
console.log(flag);//true
arr.forEach()

​ 方法对数组的每个元素执行一次提供的函数。总是返回undefined

	arr.forEach(function(currentValue,index,arr){})

​ currentValue:当前数组的元素

​ index:当前数组的索引值

​ arr:当前数组

var arr = [3,34,12,31,45]
 arr.forEach((x)=>{
   console.log(x);//遍历出来arr中的所有元素
 })

js中的map方法
map方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值
map()会按照数组中元素的顺序依次遍历处理数组中的元素
注意:
map不会对空数组进行检测,map不会改变原始数组

arr.map(function(currentValue,index,arr),thisValue)

参数说明
currentValue 必须 当前元素值
index 可选 当前元素的索引值
arr 可选 当前元素属于的数组对象。

forEach和Map函数用法相似
两者的区别:(两者的参数都是一致的,回调函数的参数也是一样的)
1、forEach()返回值是undefined,不可以链式调用。
2、map()返回一个新数组,原数组不会改变。callback参数返回的值就是数组中的新元素。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值