js 中我选择用数组还是对象,那个效率会好点?

比如 我的菜单 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可以知道名字的含义,而数组如果没有规范的书写,后期理解起来比较费劲,这点优势比较大

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632