ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数组操作高级技巧小记js

2021-11-14 11:03:45  阅读:125  来源: 互联网

标签:return name myChannel find js val 数组 id 小记


数据结构


// 我的频道
myChannel = [{"id":0,"name":"推荐"},{"id":11,"name":"后端"},{"id":12,"name":"linux"},{"id":13,"name":"人工智能"},{"id":17,"name":"前端"},{"id":18,"name":"python"},{"id":7,"name":"数据库"}]
// 所有频道
allChannel = [{"id":2,"name":"开发者资讯"},{"id":3,"name":"ios"},{"id":4,"name":"c++"},{"id":5,"name":"android"},{"id":6,"name":"css"},{"id":8,"name":"区块链"},{"id":9,"name":"go"},{"id":10,"name":"产品"},{"id":11,"name":"后端"},{"id":12,"name":"linux"},{"id":13,"name":"人工智能"},{"id":14,"name":"php"},{"id":15,"name":"javascript"},{"id":16,"name":"架构"},{"id":17,"name":"前端"},{"id":18,"name":"python"},{"id":19,"name":"java"},{"id":20,"name":"算法"},{"id":21,"name":"面试"},{"id":22,"name":"科技动态"},{"id":23,"name":"js"},{"id":24,"name":"设计"},{"id":25,"name":"数码产品"},{"id":1,"name":"html"},{"id":7,"name":"数据库"},{"id":26,"name":"软件测试"},{"id":27,"name":"测试开发"},{"id":31,"name":"test4"},{"id":32,"name":"test18"},{"id":41,"name":"test17"}]

后者包含前者

数据处理要求

将所有频道的数据刨除我的频道的数据获得新的数据,filterChannel = allChannel - myChannel

我写的处理方案

 computed: {
    filterChannels() {
      return this.allChannels.filter((val) => {
         for(var i = 0; i < this.myChannel.length; i++) {
             if (val.id === this.myChannel[i].id) {
                    return false
                }
           }
           return true
        })
      })
    }
  },

处理方案并不娴熟对array内置的方法没有特别敏感 这里使用Array.prototype.find()会更好

优化后的方案

 computed: {
    filterChannels() {
      // 数组的内置Api
      return this.allChannels.filter((val) => {
        return !this.myChannels.find((item) => {
          return val.id === item.id
        })
      })
    }
  },

因为find这个方法他返回的不是Boolean值,如果没找到该元素返回的是undefined,找到了则返回的是改元素的值,如果返回值没有0这种值的话我想这种处理方法有最简洁的代码 

 

标签:return,name,myChannel,find,js,val,数组,id,小记
来源: https://blog.csdn.net/helgeal/article/details/121315000

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有