Rumah > Soal Jawab > teks badan
假设有这样一些数据,包含了id和value两个值其中id是唯一的,用以下两种存储方式哪一种获取某一个id速度更快一些?
var array = [{id:'id1',value:1},{id:'id2',value:2},{id:'id3',value:3}];
var obj = {
'id1': 1,
'id2': 2,
'id3': 3
};
比如我要获取id = 'id2'的value,是用obj['id2']快还是循环遍历array快?
我认为是obj['id2']比较快,不知道js中Object的实现是不是类似Java的HashMap?
高洛峰2017-04-11 09:48:07
数据结构怎么设计不能单纯由速度决定。数组存的是一类数据,虽然不是不是强制性的,但这么设计对程序的可维护性和可读性比较好。对象是把一个对象的属性放到一起,把不同对象的相同属性放到一个新对象中,这个做法没问题,但是不是特别科学,在后续开发可能产生bug,并且不好维护。
PHP中文网2017-04-11 09:48:07
如果单纯从获取数据的角度来说,使用json对象的方式取值效率更高;
数组方式,你需要些循环,然后得到数据。这里要涉及到的操作是js语法层面的,然后再是内核层面的。
而json对象方式,直接即可得到数据,直接触碰的是内核层面的。
虽然,内核层面的执行效率我们当做一致的话,暴漏在外层的js语法部分的执行对于效率有一定的影响。
这就好比,某一个实现,你可以用js实现,还有一个实现使用底层内核提供的方法,孰优孰劣自知。
当然,这个不是绝对的。因为内核层面的执行效率我们是未知的!
ringa_lee2017-04-11 09:48:07
var array = [{id:'id1',value:1},{id:'id2',value:2},{id:'id3',value:3}];
你可以把这个转一下,如果有更多属性的话
var map = {
'id1':{id:'id1',value:1},
'id2':{id:'id2',value:2},
'id3':{id:'id3',value:3}
}
获取的话hash会更快一点