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.ajax传递中文参数的解决方法
May 28 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
Dec 04 Javascript
深入理解javascript动态插入技术
Nov 12 Javascript
谈谈jQuery Ajax用法详解
Nov 27 Javascript
解析javascript瀑布流原理实现图片滚动加载
Mar 10 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 jQuery
js实现通过开始结束控制的计时器
Feb 25 Javascript
spring+angular实现导出excel的实现代码
Feb 27 Javascript
es6 filter() 数组过滤方法总结
Apr 03 Javascript
vue调用本地摄像头实现拍照功能
Aug 14 Javascript
js实现随机点名
Jan 19 Javascript
浅谈Web Storage API的使用
Jun 23 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
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
Javascript Object.extend
2010/05/18 Javascript
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
2016/08/24 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
详细AngularJs4的图片剪裁组件的实例
2017/07/12 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
原生js实现随机点名
2020/07/05 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
Python 元组(Tuple)操作详解
2014/03/11 Python
Python使用ntplib库同步校准当地时间的方法
2016/07/02 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
python实现周期方波信号频谱图
2018/07/21 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
欧洲最大的品牌水上运动服装和设备在线零售商:Wuituit Outlet
2018/05/05 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
数字漫画:comiXology
2020/06/13 全球购物
给护士表扬信
2014/01/19 职场文书
党员违纪检讨书
2015/05/05 职场文书
离婚协议书格式范本
2016/03/18 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android