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) {} {}
原文地址:https://www.cnblogs.com/izhaong/p/12154298.html