Vue 数组操作

Vue 数组操作Vue 数组操作

大家好,又见面了,我是你们的朋友全栈君。

Vue 数组操作

Vue 包含一组观察数组的变异方法,所以它们也将会触发视图更新。这些方法如下:

push() 添加元素

<ul id="example-1">
 <li v-for="item in items" :key="item.id">{
  
  { item.message }} </li>
</ul>
<script type="text/javascript">
var example1 = new Vue({
  el: '#example-1',
  data: {
    items: [
      {message: 'Foo' },
      {message: 'Bar' }
    ]
  }
});
example1.$data.items.push({message :  'test'});
</script>

pop() 删除最后一个元素

example1.$data.items.pop();

shift() 删除第一个元素

example1.$data.items.shift();

unshift() 添加一个元素到数组最前面

example1.$data.items.unshift({message :'hi..'});

splice() 方法用于插入、删除或替换数组的元素

参数 描述
index 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
howmany 必需。规定应该删除多少元素。必须是数字,但可以是 “0”。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
item1, …, itemX 可选。要添加到数组的新元素example1.$data.items.splice(0,1,{message:'splice'});

sort() 排序(升序)

<ul id="example-1">
 <li v-for="item in items" :key="item.id">{
  
  { item }} </li>
</ul>
<script type="text/javascript">
var example1 = new Vue({
  el: '#example-1',
  data: {
    items: [
      2,3,4
    ]
  }
});
example1.$data.items.sort();

reverse() 排序(降序)

example1.$data.items.reverse();

重塑数组

变异方法(mutation method),顾名思义,会改变被这些方法调用的原始数组。相比之下,也有非变异(non-mutating method)方法,例如: filter(), concat() 和 slice() 。这些不会改变原始数组,但总是返回一个新数组。当使用非变异方法时,可以用新数组替换旧数组:

example1.items = example1.items.filter(function (item) {

  return item.message.match(/Foo/)

})

你可能认为这将导致 Vue 丢弃现有 DOM 并重新渲染整个列表。幸运的是,事实并非如此。 Vue 实现了一些智能启发式方法来最大化 DOM 元素重用,所以用一个含有相同元素的数组去替换原来的数组是非常高效的操作。

filter() 数组元素过滤

<ul id="example-1">
 <li v-for="n in even()">{
  
  { n }}</li>
</ul>
<script type="text/javascript">
var example1 = new Vue({
 el: '#example-1',
 data: {
  numbers: [ 1, 2, 3, 4, 5 ]
 },
 methods : {
  even : function(){
   return this.numbers.filter(function (number) {
         return number % 2 === 0;
      });
  }
 }
});
</script>

注意事项

由于 JavaScript 的限制, Vue 不能检测以下变动的数组:
当你利用索引直接设置一个项时,例如: vm.items[indexOfItem] = newValue
当你修改数组的长度时,例如: vm.items.length = newLength
为了解决第一类问题,以下两种方式都可以实现和 vm.items[indexOfItem] = newValue 相同的效果, 同时也将触发状态更新:

// Vue.set

Vue.set(example1.items, indexOfItem, newValue)
例子:


<ul id="example-1">
 <li v-for="item in items" :key="item.id">{
  
  { item.message }} </li>
</ul>
<script type="text/javascript">
var example1 = new Vue({
  el: '#example-1',
  data: {
    items: [
      {message: 'Foo' },
      {message: 'Bar' },
      {message: 'hcoder'}
    ]
  }
});
//example1.items[3] = {message : 'test...'};
Vue.set(example1.items, 3, {message : 'test...'});
</script>

数组转字符串,字符串转数组,对象转数组,数组转对象

数组转字符串

var arr = [1,2,3,4,'李明','jerry'];
arr.join()
//"1,2,3,4,李明,jerry"

arr.toString()
//"1,2,3,4,李明,jerry"

arr.join("")
//"1234李明jerry"

arr.join("-")
//"1-2-3-4-李明-jerry"

JSON.stringify(arr)
//"[1,2,3,4,"李明","jerry"]"

var x = JSON.stringify(arr)
JSON.parse(x)
//[1, 2, 3, 4, "李明", "jerry"]

字符串转数组

var x = "1-2-3-4-李明-jerry"
x.split("")
//["1", "-", "2", "-", "3", "-", "4", "-", "李", "明", "-", "j", "e", "r", "r", "y"]
x.split("-")
//["1", "2", "3", "4", "李明", "jerry"]

对象转数组

var x = {"name":"李明","age":23}

对象的键组成数组

Object.keys(x)
//["name", "age"]

对象的值组成数组

Object.values(x)
// ["李明", 23]

键值对组成的数组

Object.entries(x)
//[["name", "李明"],["age", 23]]

数组转对象

var arr =[1, 2, 3, 4, "李明", "jerry"]
{...arr}
//{0: 1, 1: 2, 2: 3, 3: 4, 4: "李明", 5: "jerry"}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106425.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • navicat激活error on generate activecode【最新永久激活】

    (navicat激活error on generate activecode)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月31日
    2.7K
  • Master page_enableeventvalidation「建议收藏」

    Master page_enableeventvalidation「建议收藏」Masterpage/contentpagepostbackproblemHi,Ihavethefollowingscenario:Iamusingamasterpage(masterpage.master)whichcontainsatextboxandtwoImagebuttonsasservercontrols.Itriedsom

    2022年7月24日
    12
  • eclipse 导入Java项目「建议收藏」

    eclipse 导入Java项目「建议收藏」偶们公司的这个老项目真的是让人头疼,师父们给偶导了N遍,偶还是记不住。俗话说“好记性不如烂笔头”,于是乎,偶决定记下来,便于自己日后查看,同时也可以给同样小白的同胞们一点参考。说的可能有点啰嗦,但是真的很详细,自己一步步来写的。第一步,打开eclipse,选择一个新的workspace,点击“OK”,进入eclipse界面。第二步,新建Java项目:点击file下面的“new”图标,选择“Java…

    2022年7月8日
    27
  • 憨批的语义分割重制版6——Pytorch 搭建自己的Unet语义分割平台「建议收藏」

    憨批的语义分割重制版6——Pytorch 搭建自己的Unet语义分割平台「建议收藏」憨批的语义分割13——Pytorch搭建自己的Unet语义分割平台注意事项学习前言什么是Unet模型代码下载Unet实现思路一、预测部分1、主干网络介绍2、加强特征提取结构3、利用特征获得预测结果二、训练部分1、训练文件详解2、LOSS解析训练自己的Unet模型注意事项这是重新构建了的Unet语义分割网络,主要是文件框架上的构建,还有代码的实现,和之前的语义分割网络相比,更加完整也更清晰一些。建议还是学习这个版本的Unet。学习前言还是快乐的pytorch人。什么是Unet模型Unet是一个

    2022年6月15日
    24
  • YUI Compressor完成代码混淆示例「建议收藏」

    YUI Compressor完成代码混淆示例「建议收藏」YUICompressor相关信息官网GitHub地址混淆单个js一般命令,java-jaryuicompressor-x.y.z.jarmyfile.js-omyfile-min.js若出现编码错误,就加上编码参数,比如你的文件的编码是utf-8编码,则命令如下,java-jaryuicompressor-x.y.z.jarmyfile.js-omyfile-min.j

    2022年7月18日
    16
  • linux获取时间戳_java时间戳转换成时间

    linux获取时间戳_java时间戳转换成时间转换成指定的日期格式,如“2021/08/2919:25:18‘:date-d@1630236318+”%Y/%m/%d%H:%M:%S”leon@ubuntu:~/work$date-d@1630236318+”%Y/%m/%d%H:%M:%S”2021/08/2911:25:18date-d@1630236318leon@ubuntu:~/work$date-d@1630236318Sun29Aug202111:25:18AMUTC…

    2022年10月2日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号