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 相关文章推荐
Jquery数独游戏解析(一)-页面布局
Nov 05 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
Oct 12 Javascript
浅析js中2个等号与3个等号的区别
Aug 06 Javascript
javascript常用函数归纳整理
Oct 31 Javascript
Jquery 全选反选实例代码
Nov 19 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
May 18 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
Apr 18 Javascript
vue2.0构建单页应用最佳实战
Apr 01 Javascript
详解vue数据渲染出现闪烁问题
Jun 29 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
Nov 09 Javascript
Vue Router history模式的配置方法及其原理
May 30 Javascript
JavaScript迭代器的含义及用法
Jun 21 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 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
php生成酷炫的四个字符验证码
2016/04/22 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
js parseInt(&quot;08&quot;)未指定进位制问题
2010/06/19 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
js实现购物车功能
2018/06/12 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
python实现数据库跨服务器迁移
2018/04/12 Python
python和shell获取文本内容的方法
2018/06/05 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
学生安全教育材料
2014/02/14 职场文书
媒体宣传策划方案
2014/05/25 职场文书
物资采购方案
2014/06/12 职场文书
学习退步检讨书
2014/09/28 职场文书
解除租赁合同协议书
2016/03/21 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL