简短的版本:数组通常比对象快。但是,没有100%正确的解决方案。
更新-测试和结果
var a1 = [{id: 29938, name: 'name1'}, {id: 32994, name: 'name1'}];var a2 = [];a2[29938] = {id: 29938, name: 'name1'};a2[32994] = {id: 32994, name: 'name1'};var o = {};o['29938'] = {id: 29938, name: 'name1'};o['32994'] = {id: 32994, name: 'name1'};for (var f = 0; f < 2000; f++) { var newNo = Math.floor(Math.random()*60000+10000); if (!o[newNo.toString()]) o[newNo.toString()] = {id: newNo, name: 'test'}; if (!a2[newNo]) a2[newNo] = {id: newNo, name: 'test' }; a1.push({id: newNo, name: 'test'});}测试设置 试验结果
原始帖子-说明你的问题中存在一些误解。
Javascript中没有关联数组。仅数组和对象。这些是数组:
var a1 = [1, 2, 3];var a2 = ["a", "b", "c"];var a3 = [];a3[0] = "a";a3[1] = "b";a3[2] = "c";
这也是一个数组:
var a3 = [];a3[29938] = "a";a3[32994] = "b";
它基本上是一个带有孔的数组,因为每个数组的确具有连续索引。它比没有孔的阵列要慢。但是,手动遍历数组甚至更慢(大多数情况下)。
这是一个对象:
var a3 = {};a3[29938] = "a";a3[32994] = "b";


