比如 我的菜单 dom, 可以通过下面两种 json 对象生成.
const menuJson1 = {
1:{title:'a',children:{1:{},2:{},3:{}}},
2:{title:'b'},
3:{title:'c'},
4:{title:'d'},
}
const menuJson2 =[
{key:1,title:'a',children:[{},{},{}]},
{key:2,title:'b'},
{key:3,title:'c'},
{key:4,title:'d'},
]
第一种,是对象,第二种是数组
对象好处是 拿对象的时候,只要给个key 就可以拿到. 删除也给个key就行
而数组,拿对象时,我每时都要遍历找出来, 删也得遍历 找出来
所以,有些迷糊. 我什么时用数组 更效率,什么时侯用对象更加效率!?
数组常用于列表,对于顺序不太重要的一组数据,数组内置方法更多,所以处理数据更加方便,如filter,find,sort等
对象通常使用来优化代码,如优化if语句
if (this.type === 'A') {
this.handleA();
} else if (this.type === 'B') {
this.handleB();
} else if (this.type === 'C') {
this.handleC();
} else if (this.type === 'D') {
this.handleD();
} else {
this.handleE();
}
// key-value方式优化
let enums = {
'A': handleA,
'B': handleB,
'C': handleC,
'D': handleD,
'E': handleE
}
function action(val){
let handleType = enums[val]
handleType()
}
只是遍历的话用对象和数组效率是差不多的,数组可能效率好些
如果是要通过key找数据当然是要用对象
相同点:对象与数组是js中的一种数据类型,是一种复杂的数据类型。
不同点:对象是用来存在多组键值对结构数据
数组是一个有序的数据集合,有序是体现在下标上,数组每存储一个数据都会自动生成一个下标,下标是从0开始的,下标是有序排列的。
如果说效率,对象通过key获取值,是知道key的名字获取的,数组获取值,其实差不多,因为数组的顺序已知,每个下标相当于对象的key一样的道理,通过对大数据的分析,两者其实差不多。
但是对象的key可以知道名字的含义,而数组如果没有规范的书写,后期理解起来比较费劲,这点优势比较大