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 相关文章推荐
javascript StringBuilder类实现
Dec 22 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
Feb 11 Javascript
jquery 添加节点的几种方法介绍
Sep 04 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
Feb 03 Javascript
常用的Javascript数据验证插件
Aug 04 Javascript
微信小程序 教程之列表渲染
Oct 18 Javascript
JS插件plupload.js实现多图上传并显示进度条
Nov 29 Javascript
vue.js系列中的vue-fontawesome使用
Feb 10 Javascript
简单两步使用node发送qq邮件的方法
Mar 01 Javascript
vue element-ui实现input输入框金额数字添加千分位
Dec 29 Javascript
ajax jquery实现页面某一个div的刷新效果
Mar 04 jQuery
uniapp开发打包多端应用完整方法指南
Dec 24 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
ThinkPHP的Widget扩展实例
2014/06/19 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
python3的输入方式及多组输入方法
2018/10/17 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
linux环境下Django的安装配置详解
2019/07/22 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
Python-for循环的内部机制
2020/06/12 Python
python设置表格边框的具体方法
2020/07/17 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
仓管员岗位职责范文
2013/11/08 职场文书
电大毕业自我鉴定
2014/02/03 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
患者身份识别制度
2015/08/06 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
Python Pygame实战之塔防游戏的实现
2022/03/17 Python