Vue项目开发中碰到对表格数据实现上移,下移的需求,只是纯前端实现移动数组数据,不跟服务端做交互。

经研究,用splice方法简洁优雅,具体实现如下:

        // 上移,下移onMove(code, dir) {let moveComm = (curIndex, nextIndex) => {let arr = this.stack.selAwardListarr[curIndex] = arr.splice(nextIndex, 1, arr[curIndex])[0]return arr}this.stack.selAwardList.some((val, index) => {if (val.awardCode === code) {if (dir === 1 && index === 0) {this.$message.warning('已在顶部!')} else if (dir === 0 && index === this.stack.selAwardList.length - 1) {this.$message.warning('已在底部!')} else {let nextIndex = dir === 1 ? index - 1 : index + 1this.stack.selAwardList = moveComm(index, nextIndex)}return true}return false})}

解释一下实现原理:

1、onMove()方法的传参code是this.stack.selAwardList数组元素的属性,用some遍历循环找到该数据在数组中的索引值(index)后停止遍历循环,dir传1表示上移,传0表示下移,根据dir的值得出nextIndex的索引值。

2、moveComm方法实现调换索引数据后返回换位后的数组。arr[curIndex] = arr.splice(nextIndex, 1, arr[curIndex])[0]做了3件事:

第一件:arr.splice(nextIndex, 1)删除下个索引的数据

第二件:arr.splice(nextIndex, 1, arr[curIndex])用当前索引数据(arr[curIndex])替换下个索引的数据

第三件:arr[curIndex] = arr.splice(nextIndex, 1, arr[curIndex])[0]当arr.splice()方法执行后会返回删除的数据,并将删除的数据赋值给当前索引

说的有点啰嗦,总的意思是这句代码同时完成了2个索引的赋值。

大家有其他更优雅的实现方法欢迎提出。

js如何实现数组数据的上移下移相关推荐

  1. 前端js实现表格数据的上移下移

    vue项目需求中需要前端实现表格行数据的上移下移,效果如下 实现思路:主要使用前端对数组的操作方法splice() 代码: tableData: [{name: '1',id: '1'}, {name ...

  2. JS题目之数组数据拆分重组转成嵌套对象,让脑细胞活跃下

    前言 下班的时候在群里看到一个小伙伴,在群里问了一道js的题,发现没人理会他; 来了兴趣就折腾了下,以下是解答过程,用的是ES6+的特性,在chrome跑的; 有兴趣的小伙伴可以瞧瞧~~谢谢 题目 效 ...

  3. js+springMVC 提交数组数据到后台

    1.ajax 代码 var ids =new Array(); $.ajax({type: "POST",url: "/user/downReport",dat ...

  4. html ul 位置上移,JS移动li行数据,点击上移下移(是位置的互换,不是top的偏移量改变)...

    JS移动li行数据,点击上移下移 * { padding:0; margin:0; } .content {width:500px;margin:20px auto;} #pCon {width:50 ...

  5. 数据上移下移简单的存储过程

    上移下移存储过程 改存储过程只有两个参数,要移动的id和排序的方式.tabelname需要动态的改变! WG_sysConfig是要改变的哦tabelName,id是排序主键,orderid是排序字段 ...

  6. vue 删除两个集合中相同的数据_vue.js如何删除数组里面的数据

    vue.js如何删除数组里面的数据 发布时间:2020-12-10 12:04:44 来源:亿速云 阅读:107 作者:小新 这篇文章主要介绍了vue.js如何删除数组里面的数据,具有一定借鉴价值,需 ...

  7. java集合转js数值_前端js调用接口转换Map数组数据

    返回Map数据 后端接口返回数据格式 { "code": 1, "msg": "操作成功!", "count": 0, ...

  8. JS二维数组转树形数据

    JS二维数组转树形数据 // 测试数据const arr = [{ id: '1', pid: '0', name: 'jack', age: 20 },{ id: '2', pid: '0', na ...

  9. html5处理json数据,js解析json数组

    js读取解析JSON类型数据 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 Jav ...

最新文章

  1. hacktoberfest_Hacktoberfest 2018:如何获得免费衬衫—即使您是编码新手
  2. __cplusplus的用处
  3. 明明连上了网,但是打不开网页
  4. vue(2)---computed,watch--2019.5.21学习笔记
  5. CodeDay#6 成都站落幕,下一站北京见
  6. React+Webpack快速上手指南
  7. NOIP2013 写后感
  8. php应用处理数据 504,PHP与504服务器错误
  9. [Windows] 集福宝- 支付宝 集福神器 2019
  10. camera主观测试_镜头测试:日本富士EBC 135/2.5+索尼A7微单实拍北京北海公园
  11. Linux部署东方通TongWeb7
  12. 绿盟科技网络安全威胁周报2017.02 请关注Microsoft Edge远程权限提升漏洞 CVE-2017-0002...
  13. m3u8播放器 android,在android中播放m3u8视频
  14. 前端图片压缩(几乎无损)
  15. matlab画漫画,震惊!无聊男子竟用函数画出可爱的卡通猫
  16. 系统同步网络时间服务器不可用,电脑时间同步出错 RPC服务器不可用解决方案...
  17. Permission denied: user=10273, access=WRITE, inode=“/cou/jd_phone_list“:root:supergroup:-rw-r--r--
  18. java caller_callee和caller属性的区别
  19. Matlab/Simulink 自动代码生成 基于模型设计学习教程(2)---- 闪烁灯实验
  20. shell技巧4 - nm命令解决AppStore2.5.2被拒问题

热门文章

  1. 使用UC浏览器安卓版访问大多数网站遇到400 bad request错误
  2. 癃闭病以及其常见药方
  3. k8s之pod和pod探针
  4. 音频相概念扫盲——声音处理的过程
  5. dns网络服务器未响应是什么原因(如果各自方法都尝试后无法使用,请尝试重启猫)
  6. C语言 memcpy和memcpy_s
  7. Random中的随机数的产生机制
  8. MQTT服务的Qos
  9. RabbitMQ的Qos
  10. 计算机组成原理setb,计算机组成原理与汇编语言4