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中setAttribute用法介绍
Jul 20 Javascript
jquery给图片添加鼠标经过时的边框效果
Nov 12 Javascript
JS获取节点的兄弟,父级,子级元素的方法
Jan 09 Javascript
js获取指定日期周数以及星期几的小例子
Jun 27 Javascript
详解JS函数重载
Dec 04 Javascript
js树插件zTree获取所有选中节点数据的方法
Jan 28 Javascript
教你用十行node.js代码读取docx的文本
Mar 08 Javascript
iframe高度自适应及隐藏滚动条的实例详解
Sep 29 Javascript
AngularJs点击状态值改变背景色的实例
Dec 18 Javascript
在iFrame子页面里实现模态框的方法
Aug 17 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
Apr 08 Javascript
vue v-for直接循环数字实例
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实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
js保存当前路径(cookies记录)
2010/12/14 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
vc6编写python扩展的方法分享
2014/01/17 Python
python实现dijkstra最短路由算法
2019/01/17 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
openCV提取图像中的矩形区域
2020/07/21 Python
Python操作Excel的学习笔记
2021/02/18 Python
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
装修致歉信
2014/01/15 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
学历公证委托书
2014/04/09 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技
Javascript的promise,async和await的区别详解
2022/03/24 Javascript