Javascript 如何在Node.js中实现对象属性
我有一个包含大量值的数组,我在其中迭代以查找如下特定值:Javascript 如何在Node.js中实现对象属性,javascript,node.js,object,Javascript,Node.js,Object,我有一个包含大量值的数组,我在其中迭代以查找如下特定值: function haveValue(value) { for(var index in arr) { var prop = arr[index]; if(prop === value) { return true; } } return false; } 但我突然想到,通过使用对象,我可以更快地执行此查找: function haveValue(value) { return typ
function haveValue(value) {
for(var index in arr) {
var prop = arr[index];
if(prop === value) {
return true;
}
}
return false;
}
但我突然想到,通过使用对象,我可以更快地执行此查找:
function haveValue(value) {
return typeof obj[value] !== 'undefined';
}
然而,在这样做之后,我没有看到性能有多大的改善。所以我想知道,对象属性是如何存储在Javascript/Node.js中的?它们基本上是为了查找而进行迭代的,与数组相同吗?我认为它们可能是使用哈希表或其他什么来实现的。您已经询问了对数组进行迭代的问题,并且询问了使用对象是否可以提供更好的性能,但是您使用for-in-loop来实现数组,并且使用for-loop或es6-includes方法可能会更好地提高性能 如果arr是一个数组,您只想检查它是否包含值,那么可以使用es6includes方法 注意:您需要检查您的目标浏览器是否支持它,如果不支持,则检查shim/pollyfill 如果您不想使用es6,那么可以使用for循环进行循环 在您的示例中,您使用的是for-in循环,它实际上用于对象而不是数组。当在阵列上使用for循环时,它应该会提供更好的性能 当使用字符串在对象(如hashmap)中查找值时,对象的大小可能会影响perf,但这种影响可能不重要,因为js引擎将在内部进行优化
选中此项,选择对象最后一个属性中的第一个属性不会真正影响性能。很明显,如果arr是一个数组,那么这种影响可能会扩大,您应该为var i=0使用a;i
function haveValue(value) {
return (arr.includes(value));
}
function haveValue(value) {
for(var i = 0; i < arr.length; i++) {
if(arr[i] === value) {
return true;
}
}
return false;
}