Vue数组变更方法和替换方法

news2024/11/23 16:34:49

一、可以引起UI界面变化

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

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

以上七个数组都会改变原数组,下面来分别讲解它们的区别:

var list = [3,4,5,6]

1. push() 向数组的尾部添加若干元素,并返回数组的新长度;

list.push(7,8)    //返回数组的长度6
list              //list=[3,4,5,6,7,8]

2. pop() 从数组的尾部删除一个元素(删且只删除一个元素),返回被删除的元素

list.pop()    //返回删除的数组6
list          //list=[3,4,5]

3. unshift() 向数组的头部添加若干元素,返回数组的新长度

list.unshift(1,2)    //返回数组的长度6
list                 //list=[1,2,3,4,5,6]

4. shift() 从数组的头部删除一个元素(删且只删除一个元素),返回被删除的元素

list.shift()        //返回删除的元素3
list                //list=[4,5,6]

ps:

  • pop()和shift()方法不接受传参,传参了也没有什么用
  • 空数组可以删除,不报错,但返回undefined

5. splice() 该方法有如下3种用法:

  1. 删除 —— 可以删除任意数量的项,只需要指定2个参数:要删除的第一项的位置和要删除项的项数。
  2. 插入 —— 可以向指定位置插入任意数量的项,只需要提供3个参数:插入起始位置、0(要删除的项数)和要插入的项。 如果要插入多个项,可以再传入第四、第五,一直任意多个项。
  3. 替换 —— 可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需要指定3个指定参数:起始位置、要删除的项数和要插入的任意数量项。 插入的项数是不必与删除的项数相等。
var colors = ["red", "green", "blue"];
var removed = colors.splice(0,1);  //删除第一项
alert(colors);  //green,blue
alert(removed);  //red,返回数组中值包含一项

removed = colors.splice(1, 0, "yellow", "orange");  //从位置1开始插入两项
alert(colors);  //green,yellow,organge,blue
alert(removed);  //返回的是一个空数组

removed = colors.splice(1, 1, "red", "purple");  //插入两项,删除一项
alert(colors);  //green,red,purple,orange,blue
alert(remove);  //yellow, 返回的数组中只包含一项

6. sort() 该方法用于对数组的元素进行排序

list:["George","John","Thomas","James","Adrew","Martin"];
list.sort();        //["Adrew", "George", "James", "John", "Martin", "Thomas"]

ps: 因为sort()排序默认的是根据字符串UniCode码进行排序,所以如果要对数字进行排序的话,参数要传递一个比较函数

list:["100","24","489","22","307","6"];
sortNumber(a,b){
      return a-b
};
list.sort(sortNumber)    //["6", "22", "24", "100", "307", "489"]

7. reverse() 该方法用于颠倒数组中元素的顺序

list:["kwz","John","Thomas","James","Adrew","Martin"]
list.reverse();    //["Martin", "Adrew", "James", "Thomas", "John", "kwz"]

二、不能引起UI界面变化

  • filter()
  • concat()
  • slice()

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

<div id="app">
    <div>
        <button @click="retain">保留非数字</button>
    </div>
    <ul>
        <li v-for="(item,index) in list" :key="index">{{item}}</li>
    </ul>
    <hr>
    <div>
        <h2>通过filter过滤得到的新数组中的内容是:</h2>
        <ol>
            <li v-for="(value,index) in newList" :key="index">{{value}}</li>
        </ol>
    </div>
</div>
<script src="./js/vue.js"></script>
    <script>
        var vm=new Vue({
            //模板选择器
            el:'#app',
            //数据中心
            data(){
 
                return{
                   list:[10,'apple',50,'orange',9,32,'banana',19,22,50],
                   
                   newList:[]
                }
 
            },
            methods:{
                retain(){
                    this.newList=this.list.filter(function(item){
                        console.log(typeof item=='string');
                        return typeof item=='string'
                    })
                }
 
            }
        })
    </script>

效果
在这里插入图片描述

concat() 方法用于连接两个或多个数组,类似于java中字符拼接操作

slice() 方法可从已有的数组中返回选定的元素。该方法并不会修改数组,而是返回一个子数组

 <div id="app">
   
    <div>
        <button @click="_slice">点击截取</button>
    </div>
 
    <ul>
        <li v-for="(item,index) in list" :key="index">{{item}}</li>
    </ul>
</div>
<script src="./js/vue.js"></script>
    <script>
        var vm=new Vue({
            //模板选择器
            el:'#app',
            //数据中心
            data(){
 
                return{
                   list:['apple','orange','banana','pear','watermelon'],
               
                }
 
            },
            methods:{
                _slice(){
                	//this.list : 'banana','pear'
                    this.list=this.list.slice(2,4)
                 
                }
 
            }
        })
    </script>

如果要替换方法要实现UI界面改变,则this.list=this.list.slice(2,4)通过这种赋值操作进行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/860948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《C和指针》(6)指针

1、内存和地址 计算机的内存是由数以亿万计的位&#xff08;bit&#xff09;组成&#xff0c;每一个位可以容纳值0、1值。由于一个位所能表示的值的范围太有限&#xff0c;所以单独的位用处不大。通常许多为合成一组作为一个单位&#xff0c;这样就可以存储范围较大的值。下图…

【AI】Python调用讯飞星火大模型接口,轻松实现文本生成

随着chatGPT的出现&#xff0c;通用大模型已经成为了研究的热点&#xff0c;由于众所周知的原因&#xff0c;亚太地区调用经常会被禁&#xff0c;在国内&#xff0c;讯飞星火大模型是一个非常优秀的中文预训练模型。本文将介绍如何使用Python调用讯飞星火大模型接口&#xff0c…

flask-----初始项目架构

1.初始的项目目录 -apps 包 ------存放app -user文件夹 -------就是一个app -models.py --------存放表模型 -views.py -------存放主代码 -ext包 -init.py -------实例化db对象 -manage.py -----运行项目的入口 -setting.py -----配置文件 2.各文件内容 manage…

剑指offer39.数组中出现次数超过一半的数字

这个题非常简单&#xff0c;解法有很多种&#xff0c;我用的是HashMap记录每个元素出现的次数&#xff0c;只要次数大于数组长度的一半就返回。下面是我的代码&#xff1a; class Solution {public int majorityElement(int[] nums) {int len nums.length/2;HashMap<Integ…

【C++】异常的使用和细节

传统C语言错误异常的方式 C语言一般使用assert来处理错误&#xff0c;assert确实很不错&#xff0c;可以把错误的行数都提示出来&#xff0c;但是&#xff0c;assert有一个致命的缺点&#xff0c;就是触发assert之后就会终止程序&#xff0c;还有一点就是在release环境下&#…

如何通过Pytest的插件,轻松切换自动化测试的环境地址?

前言 前面小编介绍了如何通过Pytest的插件来实现自动化测试的环境的切换&#xff0c;当时使用的方法是通过钩子函数进行获取命令行参数值&#xff0c;然后通过提前配置好的参数进行切换测试环境地址。加我VX&#xff1a;atstudy-js 回复“测试”&#xff0c;进入 自动化测试学…

【CDH集群】无法发出查询:Host Monitor未运行

无法发出查询:Host Monitor未运行 【CDH集群】无法发出查询:Host Monitor未运行同事的解决方案解决方法&#xff1a;删除原uuid重启agent查看新uuid修改scm数据库中HOSTS表中的agent的uuid 【CDH集群】无法发出查询:Host Monitor未运行 起初是impala报错&#xff0c;连接不上&…

武器换弹系统这节课出现的bug,角色不能正确掏枪了,只有换完弹夹以后才能正常掏枪了

UE4系列文章目录 文章目录 UE4系列文章目录前言一、蓝图实现二、错误原因三、修改后的效果 前言 在学习武器换弹系统这节课出现的bug&#xff0c;角色不能正确掏枪了&#xff0c;只有换完弹夹以后才能正常掏枪了&#xff0c;就是添加了换弹之后才影响了持枪功能&#xff0c;在…

Maven的入门级——介绍,安装,导入项目,全网最最详细教程!!,包含可能会包的错误的已经指出来了

目录 一.Maven的基本介绍 二. Maven的使用过程 使用步骤&#xff1a; 三.Maven的安装 3.1 下载 3.2 配置环境步骤 3.3配置settings.xml文件 四.入门案列 4.1 配置Eclipse环境 4.2 介绍Maven项目的结构 4.3 运行测试项目 一.Maven的基本介绍 我们可以知道在程序员做项目的时…

ngrok内网穿透可以实现资源共享吗?快解析更加简洁

随着互联网的高速发展&#xff0c;越来越多的人开始意识到内网穿透技术的重要性。在这一技术中&#xff0c;ngrok已经成为了一个备受关注的工具。然而&#xff0c;很多人对于ngrok是否可以进行资源共享存在疑问。本文将从新的角度出发&#xff0c;深入探讨这个问题。 了解什么…

SAP使用函数NUMBER_GET_NEXT创建流水号

1. 系统中设定流水号&#xff1b;使用T-Code&#xff1a;SNRO来创建一个流 输入Object&#xff1a;ZLC_001&#xff0c;然后单击创建。 然后输入Shorttext, Long text, Number length domain在写程序的时候应该会另外创建&#xff0c;这里测试就使用料号的Domain MATNR来做,其他…

Mahout教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 Mahout 是 Apache Software Foundation&#xff08;ASF&#xff09; 旗下的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现&#xff0c;包括聚类、分类、推荐…

利用PHP的特性做免杀Webshell

0x01 前言 最近很多家厂商都陆续开放了自己的Webshell检测引擎&#xff0c;并且公开接口&#xff0c;邀请众安全研究员参加尝试bypass检测引擎&#xff0c;并且给予奖励&#xff0c;我也参加了几场类似的活动&#xff0c;有 ASRC 的 伏魔计划 &#xff0c;也有 TSRC 的 猎刃计…

8月盛夏相约|上海国际智能家居展SSHT 精彩亮点抢先看

上海国际智能家居展览会&#xff08;SSHT&#xff09; 2023年8月29至31日 上海新国际博览中心举行 SSHT 作为国内专业智能家居展会&#xff0c;定位为“智能家居技术的行业平台”&#xff0c;以“技术整合”及“跨界合作”为主轴&#xff0c;旨在呈现不同层面的智能家居技术如…

计算机基础知识一

1、计算机系统组成 1.1 硬件 CPU&#xff1a;中央处理器、计算机核心部件、负责计算任务 内存&#xff1a;记忆功能、存储二进制数&#xff0c;内存是一个字节一个地址。 内存大小换算&#xff1a; 8 bits 1 Byte 1024 Bytes Bytes 1 KB &#xff0c; 1024 KB KB 1 …

妙盈面试(部分)

算法题1&#xff0c;二分查找即可&#xff1a; git rebase算法题2&#xff0c;求二叉树两结点的最小公共祖先 搞笑的是&#xff0c;第2道算法题我刚开始做&#xff0c;黑屏了两秒钟&#xff0c;当时其实腾讯会议软件已经崩溃了&#xff0c;但是我没注意到而是继续做题。等到做…

openGauss学习笔记-36 openGauss 高级数据管理-TRUNCATE TABLE语句

文章目录 openGauss学习笔记-36 openGauss 高级数据管理-TRUNCATE TABLE语句36.1 语法格式36.2 参数说明36.3 示例 openGauss学习笔记-36 openGauss 高级数据管理-TRUNCATE TABLE语句 清理表数据&#xff0c;TRUNCATE TABLE用于删除表的数据&#xff0c;但不删除表结构。也可以…

易大师运势测算网站源码含视频搭建教程

微信/支付宝支付、海外paypal支付、积分支付、VIP免支付&#xff0c;易支付&#xff0c;码支付。 对接真人服务、完善的分销功能、支持设置一二多级分成比例、微信/QQ登陆、注册送积分设置。 推广链接被访问送积分设置&#xff0c;海报推广功能、完善的推广机制&#xff0c;可…

MES系统应该涵盖那些功能

导 读 ( 文/ 1497 ) MES系统是专门面向生产环节的软件系统&#xff0c;用于管理、监控原材料转化为中间产品以及成品的过程。尽管市面上有着不同类别、覆盖不同行业的MES系统&#xff0c;但它们都具有一些基本特征&#xff0c;即包括产品文档管理、物料管理、生产执行管理…

CVE-2021-26411在野样本中利用RPC绕过CFG缓解技术的研究

浏览器渲染进程漏洞利用的一般思路是&#xff1a;在利用漏洞获得用户态任意地址读写权限后&#xff0c;通过篡改DOM、js等对象的虚表函数指针劫持程序执行流&#xff0c;通过ROP链调用VirtualProtect等Win32 API&#xff0c;修改保存shellcode buffer的内存属性为PAGE_EXECUTE_…