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的offset、client、scroll使用方法详解
Dec 25 Javascript
jQuery使用元素属性attr赋值详解
Feb 27 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
Mar 04 Javascript
基于jQuery实现仿淘宝套餐选择插件
Mar 04 Javascript
jquery插件orbit.js实现图片折叠轮换特效
Apr 14 Javascript
JavaScript实现表格点击排序的方法
May 11 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
Dec 26 Javascript
原生node.js案例--前后台交互
Feb 20 Javascript
微信小程序实现图片预览功能
Jan 31 Javascript
使用rollup打包JS的方法步骤
Dec 05 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
Mar 10 Javascript
解决antd Form 表单校验方法无响应的问题
Oct 27 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
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
vue单页缓存存在的问题及解决方案(小结)
2018/09/25 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
Python实现扫描局域网活动ip(扫描在线电脑)
2015/04/28 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
Python各种扩展名区别点整理
2020/02/27 Python
python关于变量名的基础知识点
2020/03/03 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
python中四舍五入的正确打开方式
2021/01/18 Python
PHP如何设置和取得Cookie值
2015/06/30 面试题
好矿嫂事迹材料
2014/01/21 职场文书
导游个人求职信范文
2014/03/23 职场文书
给校长的建议书400字
2014/05/15 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
党校毕业心得体会
2014/09/13 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
村官2015年度工作总结
2015/10/14 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
springboot读取nacos配置文件
2022/05/20 Java/Android