Vue中遍历数组的新方法实例详解


Posted in Javascript onJuly 21, 2019

1、foreach

foreach循环对不能使用return来停止循环

search(keyword){
     var newList = []
     this.urls.forEach(item =>{
      if(item.name.indexOf(keyword) != -1){
       newList.push(item)
      }
     })
     return newList
    }

2、filter

item对象就是遍历数组中的一个元素,includes是es6中的新方法,在search方法中直接返回新数组

search(keyword){
     return this.urls.filter(item =>{
      if(item.name.includes(keyword)){
       return item
    }
  })
 }

3、findIndex

返回true后index就可以获取到匹配的元素在进行删除

del(row){
     this.$confirm("确定要删除吗?", "删除").then(action=>{
     var index = this.urls.findIndex(item =>{
      if(item.name == row.name){
       return true;
      }
     })
     this.urls.splice(index, 1)
});

4、some

如果匹配成功就return true跳出some的循环

del(row){
    this.$confirm("确定要删除吗?", "删除").then(action=>{
      this.urls.some((item, i) =>{
      if(item.name == row.name){
       this.urls.splice(i, 1)
       return true;
      }
     }) 
  });
}

5、上例子,在一个vue的data中存入一个固定的数组,对数组进行遍历,实现搜索功能,删除功能

在el-table中 :data中绑定一个方法,方法中对固定的数组urls进行遍历,返回一个新的数组实现搜索功能

<template>
  <div>
   <label style="float: left;">
   搜索关键字:
   <input type="text" class="form-control" v-model="keyword">
  </label>
    <el-table :data="search(keyword)" size="small" :stripe="true" :border="true" @select="select" @select-all="select">
      <el-table-column type="selection"></el-table-column>
      <el-table-column type="index"></el-table-column>
      <el-table-column label="网站名" prop="name" width="200">
        <template slot-scope="slot">
          <a href="slot.row.url" target="_blank">{{slot.row.name}}</a>
        </template>
      </el-table-column>
      <el-table-column label="网址" prop="url"></el-table-column>
      <el-table-column label="类型" prop="type" width="50"></el-table-column>
      <el-table-column label="国家" prop="country" width="50"></el-table-column>
      <el-table-column label="操作" width="50">
        <template slot-scope="slot">
          <el-button size="mini" type="text" icon="el-icon-delete" @click="del(slot.row)"></el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-divider content-position="left">表格操作</el-divider>
    <el-button @click="batchDelete" type="danger" icon="el-icon-delete" size="small">批量删除</el-button>
  </div>
</template>
<script>
  export default {
    data() {
      return {
    keyword:'',
        selections: [],
        urls: [{
            name: "新浪",
            url: "http://www.sina.com",
            type: "资讯",
            country: "中国"
          },
          {
            name: "腾讯",
            url: "http://www.tencent.com",
            type: "聊天",
            country: "中国"
          },
          {
            name: "谷歌",
            url: "http://www.google.com",
            type: "资讯",
            country: "美国"
          },
          {
            name: "韬睿",
            url: "http://www.51i-star.com",
            type: "教育",
            country: "中国"
          }
        ]
      };
    },
    methods: {
      del(row){
        this.$confirm("确定要删除吗?", "删除").then(action=>{
     /* this.urls.some((item, i) =>{
      if(item.name == row.name){
       this.urls.splice(i, 1)
       return true;
      }
     }) */
     var index = this.urls.findIndex(item =>{
      if(item.name == row.name){
       return true;
      }
     })
     this.urls.splice(index, 1)
        });
      },
      select(selections, row) {
        this.selections = selections;
      },
      batchDelete() {
        this.$confirm("确定要删除吗?", "删除")
          .then(action => {
            for (var i = this.urls.length - 1; i >= 0; i--) {
              for (var j = this.selections.length - 1; j >= 0; j--) {
                if (this.urls[i].name == this.selections[j].name) {
                  this.urls.splice(i, 1);
                  break;
                }
              }
            }
          })
          .catch(error => {
            alert(error);
            this.$message('删除取消');
          });
      },
   search(keyword){
    /* var newList = []
    this.urls.forEach(item =>{
     if(item.name.indexOf(keyword) != -1){
      newList.push(item)
     }
    })
    return newList */
    return this.urls.filter(item =>{
     if(item.name.includes(keyword)){
      return item
     }
    })
   }
    }
  }
</script>
<style>
</style>

6、效果图为

Vue中遍历数组的新方法实例详解

总结

以上所述是小编给大家介绍的Vue中遍历数组的新方法实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
跨浏览器的设置innerHTML方法
Sep 18 Javascript
Javascript实例教程(19) 使用HoTMetal(2)
Dec 23 Javascript
javascript中的onkeyup和onkeydown区别介绍
Apr 28 Javascript
document.getElementBy(&quot;id&quot;)与$(&quot;#id&quot;)有什么区别
Sep 22 Javascript
基于jquery实现放大镜效果
Aug 17 Javascript
jQuery实现的超简单点赞效果实例分析
Dec 31 Javascript
React学习笔记之条件渲染(一)
Jul 02 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
Dec 08 Javascript
详解JSON.stringify()的5个秘密特性
May 26 Javascript
JavaScript设计模式之策略模式实现原理详解
May 29 Javascript
vue 子组件和父组件传值的示例
Sep 11 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
Nov 07 Javascript
Vue项目中使用WebUploader实现文件上传的方法
Jul 21 #Javascript
jquery插件开发模式实例详解
Jul 20 #jQuery
JS回调函数原理与用法详解【附PHP回调函数】
Jul 20 #Javascript
JavaScript展开操作符(Spread operator)详解
Jul 20 #Javascript
JavaScript剩余操作符Rest Operator详解
Jul 20 #Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
Jul 20 #Javascript
基于vue 实现表单中password输入的显示与隐藏功能
Jul 19 #Javascript
You might like
探寻PHP脚本不报错的原因
2014/06/12 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
Angular Module声明和获取重载实例代码
2016/09/14 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
VueJS全面解析
2016/11/10 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
python开发之thread实现布朗运动的方法
2015/11/11 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
python 调用钉钉机器人的方法
2019/02/20 Python
Django Rest framework解析器和渲染器详解
2019/07/25 Python
简单了解python中的与或非运算
2019/09/18 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
竞职演讲稿范文
2014/01/11 职场文书
员工考核管理制度
2014/02/02 职场文书
金融专业求职信
2014/08/05 职场文书
员工教育培训协议书
2014/09/27 职场文书
2014年村官工作总结
2014/11/24 职场文书
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技