zoukankan      html  css  js  c++  java
  • JS 数组, 对象的增查改删(多语法对比)

    数据结构横向对比, 增, 查, 改, 删

    建议: 在用数据结构的时候, 优先考虑Map和Set(考虑数据的唯一性), 放弃传统的数组和Object, 特别是比较复杂的数据结构时

    数组

    Map与Array的对比

      let map = new Map()
      let array = []
    
      map.set('t', 1)
      array.push({
        t: 1
      })
    
      console.info('map-array', map, array);
      // map-array Map(1) {"t" => 1} [{t: 1}]
    
      let map_exist = map.has('t')
      let array_exist = array.find(item => item.t)
    
      console.info('map-array', map_exist, array_exist)
      // map-array true {t: 1}
    
      map.set('t', 2)
      array.forEach(item => item.t ? item.t = 2 : '')
    
      console.info('map-array-modify', map, array);
      // map-array-modify Map(1) {"t" => 2}  [{t: 2}]  
    
      map.delete('t')
    
      let index = array.findIndex(item => item.t)
      array.splice(index, 1)
    
      console.info('map-array-empty', map, array)
      // map-array-empty Map(0) {} []
    }
    

    Set与Array的对比

      let set = new Set()
      let array = []
    
      set.add({
        t: 1
      })
      array.push({
        t: 1
      })
    
      console.info('set-array', set, array);
      // set-array Set(1) {[[Entries]]: [{t: 1}]}  [{t: 1}] 
    
      let set_exsit = set.has({
        t: 1
      })
      let array_exist = array.find(item => item.t)
    
      console.info('set-array', set_exsit, array_exist);
      // set-array false {t: 1}
    
      set.forEach(item => item.t ? item.t = 2 : '')
      array.forEach(item => item.t ? item.t = 2: '')
      
      console.log('set-array-modify', set, array);
      // set-array-modify Set(1) {[[Entries]]: [{t: 2}]}  [{t: 2}] 
    
      set.forEach(item => item.t ? set.delete(item) : '');
    
      let index = array.findIndex(item => item.t)
      array.splice(index, 1)
    
      console.log('set-array-empty', set, array);
      // set-array-empty Set(0) {[[Entries]]: []} []
    }
    

    对象

    Map, Set, Object的对比

      let item = {
        t: 1
      }
      let map = new Map()
      let set = new Set()
      let obj = {}
    
     map.set('t', 1)
     set.add(item)
     obj['t'] = 1
    
     console.info('map-set-obh', obj, map, set)
     // map-set-obh {t: 1} Map(1) {"t" => 1} Set(1) {{t: 1}}
    
      console.info({
        map_exist: map.has('t'),
        set_exsit: set.has(item),
        obj_exsit: 't' in obj
      })
      // {map_exist: true, set_exsit: true, obj_exsit: true}
    
      map.set('t', 2)
      item.t = 2
      obj['t'] = 2
    
      console.info('map-set-obj-modify', map, set, obj)
      // map-set-obj-modify Map(1) {"t" => 2} Set(1) {{t: 2}} {t: 2}
    
      map.delete('t')
      set.delete(item)
      delete obj['t']
    
      console.info('map-set-obj-empty', map, set, obj)
      // map-set-obj-empty Map(0) {} Set(0) {} {}
    
  • 相关阅读:
    目前最大的IPV6安全风险有哪些?
    PHP中exec、system等函数调用linux命令问题
    ubuntu下LAMP环境安装
    Ubuntu配置Apache虚拟主机
    XML和YAML的区别与使用方法
    使用CURL访问站点的时候出现403的解决办法
    IPv6安装及使用手册
    SuperSlide2.1-滚动
    HTML常用手册
    关于Ajax参数的思考
  • 原文地址:https://www.cnblogs.com/izhaong/p/12154298.html
Copyright © 2011-2022 走看看