我有一些数据,例如学生姓名。我将它们添加到一个对象,其中key是名称,数据为null。
我在堆栈溢出中读取了我自己的一个线程,在按值搜索时,对象比数组执行得更好。因为浏览器使用地图算法/概念作为对象。因此,即使数据不是键值对格式,我也会广泛使用对象/地图。
即使数据不是键值对格式,是否鼓励使用对象而不是数组?
谢谢。
答案 0 :(得分:4)
即使数据不是键值对格式,是否鼓励使用对象而不是数组?
这是一个纯粹主观的问题,所以让我们改一下:
使用对象跟踪唯一值(使用值作为键)比使用数组跟踪唯一值(使用值作为条目)更快?
几乎可以肯定,是的,虽然当然如果性能是一个问题,你应该在目标JavaScript引擎上检查它,并使用目标数据的代表性样本,因为引擎和数据集都可能影响结果。
它还取决于你使用对象的 :
在密钥上放置前缀以避免与"toString"
的对象发生冲突的常见做法可能会影响甚至否定性能优势(但有更好的方法,尤其是ES5)。请注意,ES6会提供Object.prototype
和Map
个对象,这些对象不会出现Set
等问题。
但是,例如,这里有一个测试on jsPerf,它检查10个确实存在的值,10个不包含100个条目的数组或100个属性的对象;各种对象版本在Chrome(V8),Firefox(SpiderMonkey)和IE11(JScript)上轻松获胜,但使用字符串连接的除外:
(每秒操作次数越多越好。)
<强>设定:强>
toString
测试var arr = [
'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'
];
// The object equivalent for testing for uniqueness
var obj = arr.reduce(function(o, key) {
o[key] = true;
return o;
}, {});
// The same, with using an object with no prototype so
// we don't need to worry about `"toString"` and such
var nullObj = arr.reduce(function(o, key) {
o[key] = true;
return o;
}, Object.create(null));
// The same, using a prefix on the values to avoid the
// issue with `"toString"` (common pre-ES5)
var prefixedObj = arr.reduce(function(o, key) {
o[" " + key] = true;
return o;
}, {});
// Not in the object or array
var negatives = [
'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'
];
// A list of random choices from the array to check for, both ones we'll find and ones we won't
var choices = (function() {
var n = 0, rv = [], index = 0;
while (rv.length < 40) {
n += Math.floor(Math.random() * 5);
rv.push(arr[n]);
if (index < negatives.length) {
rv.push(negatives[index++]);
}
}
return rv;
})();
:
Array#indexOf(value)
测试var found = choices.reduce(function(acc, value) {
if (arr.indexOf(value) !== -1) {
++acc;
}
return acc;
}, 0);
if (found !== 20) { throw "Error in test"; }
:
obj.hasOwnProperty(value)
测试var found = choices.reduce(function(acc, value) {
if (obj.hasOwnProperty(value)) {
++acc;
}
return acc;
}, 0);
if (found !== 20) { throw "Error in test"; }
:
obj[value]
测试// Warning: To use this way of checking, you need to be sure your
// values don't happen to match something from Object.prototype,
// such as `toString` or `valueOf`
var found = choices.reduce(function(acc, value) {
if (obj[value]) {
++acc;
}
return acc;
}, 0);
if (found !== 20) { throw "Error in test"; }
:
nullObj[value]
测试// Note the object was created with no prototype (Object.create(null))
var found = choices.reduce(function(acc, value) {
if (nullObj[value]) {
++acc;
}
return acc;
}, 0);
if (found !== 20) { throw "Error in test"; }
:
prefixedObj[value]