当前位置: 首页 > news >正文

建设银行信用卡申请网站长春做网站 信赖吉网传媒

建设银行信用卡申请网站,长春做网站 信赖吉网传媒,wordpress knowhow 汉化,做网站费用需要分摊吗概要 这是一篇记录文#xff0c;记录数组操作对象去重的实现。 需求 有这样一个数组 [{_id: 123,name: 张三 },{_id: 124,name: 李四 },{_id: 123,name: 张三 }] 实际上我们只需要 [{_id: 123,name: 张三 },{_id: 124,name: 李四 }] 去重 简单数组的去重 Array.from(new Set([…概要 这是一篇记录文记录数组操作对象去重的实现。 需求 有这样一个数组 [{_id: 123,name: 张三 },{_id: 124,name: 李四 },{_id: 123,name: 张三 }] 实际上我们只需要 [{_id: 123,name: 张三 },{_id: 124,name: 李四 }] 去重 简单数组的去重 Array.from(new Set([1,1,2,3,4,4])) // [1,2,3,4] 以对象为元素的数组去重 和数组相关的算法多种多样在你以为自己已经掌握数组之后会发现很多和数组相关的算法仍旧很复杂。 下面我将讲述一个入门等级的数组算法解决上面提出的需求。 1、定义一个函数removeRepeat它需要传入2个参数arr表示需要去重的数组field表示需要比较的key。比如我们的需求是比较 _id 是否有重复。 function removeRepeat(arr, field){return arr } 2、需要一个空数组用来存储每个对象元素中field对应的value。 let s [] for(let v of arr){s.push(v[field]) } //s [123, 124, 123] 3、将所有field的值存到数组之后它们的下标一一对应原数组的下标这点很重要接着我们需要2个对象集合result用来存储s里遍历出来的元素如果有重复就将重复的元素丢到reSet对象里面。 let result {}, reSet {} for(let i0,lens.length;ilt;len;i){if(!result[s[i]] amp;amp; result[s[i]] ! 0) {//如果result不存在当前的key并且它不为0时result[s[i]] i} else {reSet[s[i]] i} } // result {123: 0, 124: 1} 这是去重重复后的元素 // reSet {123: 2} 我们将重复的元素123作为key它的下标2作为value。 4、上一步得到了result和reSet2个对象那么我们该用哪个对象来处理原数组的去重呢只需要reSetreSet记录了要去重的对象所在的下标那么可以直接用splice干掉它。 for(let key in reSet){arr.splice(reSet[key], 1) } /* arr [{_id: 123,name: 张三 },{_id: 124,name: 李四 }] */ 5、说明 关键的第3和4步都是用对象来处理这样做的好处是时间复杂度可以达到O(1)如果用数组来保存则需要2个for循环时间复杂度变成了O(n²)。 完整源码 function removeRepeat(arr, field){let s [], result {}, reSet {}for(let v of arr){s.push(v[field])}for(let i0,lens.length;ilt;len;i){if(!result[s[i]] amp;amp; result[s[i]] ! 0) {result[s[i]] i} else {reSet[s[i]] i}}for(let key in reSet){arr.splice(reSet[key], 1)}return arr }// removeRepeat(arr, _id) 补充 受到各路大神的解法影响我也针对上面代码的不足做了修改。 1、更简洁的代码。 2、支持多个重复对象的去重缺点是会改变原来的排序。 const removeRepeat (arr, field) gt; {let s {}for(let i0,lenarr.length;ilt;len;i){s[arr[i][field]] arr[i]}return Object.values(s) } 总结 数组还有各种有趣的操作也经常作为各大公司考察的题型之重多练习和数组相关的算法会很有帮助。 原文地址https://segmentfault.com/a/1190000012873968 转载于:https://www.cnblogs.com/lalalagq/p/9959426.html
http://wiki.neutronadmin.com/news/242739/

相关文章:

  • 网站建设销售顾问开场白网站首页优化的目的
  • 做直播平台网站赚钱吗网络广告一般是怎么收费
  • 关于网站建设的请示wordpress安装主题打不开
  • 网站运营与推广方案html5 网站模板下载
  • 菏泽做网站wordpress媒体库
  • 创建一个网站流程网页制作基础步骤
  • ssl外贸网站wordpress 重定向函数
  • 个人做外贸的网站如何做网站线上监控
  • 安徽阜阳网站建设公司wordpress利于seo
  • 网上如何申请注册公司百度seo刷排名软件
  • 分析不同网站的优缺点聊城企业网站建设
  • 常州知名网站厦门百度关键词优化
  • 学校做网站免费个人网站空间
  • 网站建设三方合同范本wordpress国外模板下载
  • 北京企业网站推广哪家好网络服务提供者知道网络用户利用其网络服务
  • 主流网站宽度网络营销和网上销售的区别
  • 中山精品网站建设新闻wordpress淘宝客
  • 做app需要网站吗seo综合查询是什么
  • 企业门户网站建设咨询池州网站建设怎么样
  • 参考文献 教学网站建设wordpress彩色标签云
  • 高校网站建设管理制度dede搭建网站教程
  • 网站开发团队哪些人两学一做网站链接
  • 5种可以给网站带来流量的方式长春免费建站模板
  • pythom 网站开发规范中国外发加工网app
  • 山东君天建设工程有限公司网站双网建筑工程资质公司
  • 网站维护提示网站开发工具选用原则
  • 信息流广告代理商的盈利模式企业网站优化报价
  • 北京做网站建设价格低东营网站建设优选案例
  • 青岛网站建设哪家公司好网站内链建设不可忽视的地方
  • 小语种外贸网站西安做网站那家好