DB1
或DB2
。var DB1 = {
user: {}
};
var DB2 = {
user: []
};
DB1.user['001'] = {
email: 'name@email.com',
name: 'ken'
};
DB2.user['001'] = {
email: 'name@email.com',
name: 'ken'
};
console.log(DB1.user['001']);
console.log(DB2.user['001']);
在这种情况下,DB1和DB2表现得完全相同,至少在我看来是这样的。
它们有什么区别?只是表达{}或[]的方式吗?
如果不同,哪一个更有效率?
感谢您的想法。
更新:
非常感谢所有友善详细回答我的人。
我可能明白了,在这种情况下,数组[]用于关联方式实际上是对象。
在这种情况下,它(与对象而非数组相同)的行为相同,好的,我知道了。
那么,我想知道的是,在这种情况下,它只是表达式[]和{}的区别吗?
更重要的是,在这种情况下,如果不仅仅是表达式,它们之间有何不同,哪一个更有效率,这就是我想知道的。谢谢。
更新2:
好的,这并不像许多人认为的那样显而易见。我编写了以下测试代码:
var DB1 = {
user:
{}
};
var DB2 = {
user: []
};
var DB3 = {
user: []
};
for (var i = 0; i < 100000; i++)
{
var id = ('0000' + i)
.slice(-5);
DB1.user[id] = {
email: 'name@email.com',
name: 'ken'
};
DB2.user[id] = {
email: 'name@email.com',
name: 'ken'
};
DB3.user[i] = {
email: 'name@email.com',
name: 'ken'
};
}
//confirm the value just in case
console.log(DB1.user['00000']);
console.log(DB1.user['00001']);
console.log(DB1.user['99999']);
console.log(DB1.user['100000']);
for (var t = 0; t < 10; t++)
{
console.log('-----------test ' + t);
console.time('DB1');
for (var i = 0; i < 100000; i++)
{
var id = ('0000' + i)
.slice(-5);
var data = DB1.user[id];
}
console.timeEnd('DB1');
console.time('DB2');
for (var i = 0; i < 100000; i++)
{
var id = ('0000' + i)
.slice(-5);
var data = DB2.user[id];
}
console.timeEnd('DB2');
console.time('DB3');
for (var i = 0; i < 100000; i++)
{
var id = ('0000' + i)
.slice(-5);
var id1 = id * 1;
var data = DB3.user[id1];
}
console.timeEnd('DB3');
}
结果:
{ email: 'name@email.com', name: 'ken' }
{ email: 'name@email.com', name: 'ken' }
{ email: 'name@email.com', name: 'ken' }
undefined
-----------test 0
DB1: 46ms
DB2: 68ms
DB3: 28ms
-----------test 1
DB1: 39ms
DB2: 33ms
DB3: 26ms
-----------test 2
DB1: 32ms
DB2: 39ms
DB3: 25ms
-----------test 3
DB1: 57ms
DB2: 33ms
DB3: 27ms
-----------test 4
DB1: 39ms
DB2: 35ms
DB3: 27ms
-----------test 5
DB1: 39ms
DB2: 32ms
DB3: 27ms
-----------test 6
DB1: 33ms
DB2: 36ms
DB3: 26ms
-----------test 7
DB1: 39ms
DB2: 41ms
DB3: 40ms
-----------test 8
DB1: 32ms
DB2: 32ms
DB3: 28ms
-----------test 9
DB1: 36ms
DB2: 31ms
DB3: 28ms
对于10万条记录,数组DB略微更快,但我认为我将使用关联数组风格的对象DB。
{}
更高效。[]
是一个数组,它具有所有对象的好处以及数组的功能。 - reergymerej