ES6(十)map、set与数组和对象的比较

Map和数组的对比

let map = new Map()
let array = []
//
map.set('t', 1)
array.push({t: 1})
console.log('add', map, array)
//
let mapExist = map.has('t')
let arrayExist = array.find(item => item.t)
console.log('get', mapExist, arrayExist)
//
map.set('t', 2)
array.forEach(item => {
  item = item.t ? item.t = 2 : ''
  return item
})
console.log('modify', map, array)
//
map.delete('t')
array.splice(array.findIndex(item => item.t), 1)
console.log('remove', map, array)

set和数组的对比

let set = new Set()
let array = []
//
set.add({t: 1})
array.push({t: 1})
console.info('add', set, array)
//
let setExist = set.has({t: 1})
let arrayExist = array.find(item => item.t)
console.info('get', setExist, arrayExist)
//
set.forEach(item => {
  item = item.t ? item.t = 2 : ''
  return item
})
array.forEach(item => {
  item = item.t ? item.t = 2 : ''
  return item
})
console.info('modify', set, array)
//
set.forEach(item => {
  item = item.t ? set.delete(item) : ''
  return item
})
array.splice(array.findIndex(item => item.t), 1)
console.info('delete', set, array)


map、set和对象的使用比较

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.log('add', map, set, obj)
//
console.info({
  action: 'get',
  mapExist: map.has('t'),
  setExist: set.has(item),
  objExist: 't' in obj
})
//
map.set('t', 2)
item.t = 2
obj.t = 2
console.log('modify', map, set, obj)
//
map.delete('t')
set.delete(item)
delete obj.t
console.log('remove', map, set, obj)

猜你喜欢

转载自www.cnblogs.com/ronle/p/11494891.html