数据结构横向对比, 增, 查, 改, 删
建议: 在用数据结构的时候, 优先考虑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) {} {}