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 实现checkbox全选,反选,全不选等功能代码(奇数)
Oct 24 Javascript
JavaScript?Apple设备检测示例代码
Nov 15 Javascript
利用jquery写的左右轮播图特效
Feb 12 Javascript
jQuery插件开发详细教程
Jun 06 Javascript
jQuery中not()方法用法实例
Jan 06 Javascript
AngularJS基础学习笔记之控制器
May 10 Javascript
不同js异步函数同步的实现方法
May 28 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
Apr 01 Javascript
微信小程序实现简单评论功能
Nov 28 Javascript
node和vue实现商城用户地址模块
Dec 05 Javascript
微信小程序webview 脚手架使用详解
Jul 22 Javascript
vue开发中遇到的问题总结
Apr 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
用Zend Encode编写开发PHP程序
2010/02/21 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
动态加载iframe
2006/06/16 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
python目录与文件名操作例子
2016/08/28 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
python可视化text()函数使用详解
2020/02/11 Python
python读取xml文件方法解析
2020/08/04 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
自荐信格式范文
2013/10/07 职场文书
将相和教学反思
2014/02/04 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
2014幼儿园卫生保健工作总结
2014/12/05 职场文书
教师个人教学反思
2016/02/23 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang