gpt4 book ai didi

javascript - 关于优化 for-in 语句

转载 作者:行者123 更新时间:2023-12-03 09:03:31 24 4
gpt4 key购买 nike

我读了一篇名为“优化 killer ”的文章,并在5.2.3. The object contains enumerable array indices中,它说:

Workaround: Always use Object.keys and iterate over the array with for loop. If you truly need all properties from entire prototype chain, make an isolated helper function:

function inheritedKeys(obj) {
var ret = [];
for(var key in obj) {
ret.push(key);
}
return ret;
}

没明白什么意思。上面的代码中,还有一个for...in,所以函数inheritedKeys无法优化,怎么可能是一个孤立的辅助函数呢?

最佳答案

这只是一个关于如何使用 for in 循环从对象获取键的示例。他实际上告诉你,为了让它更快,当你想要获取对象的键时,你应该使用 Object.keys 。

这是测试性能。 http://jsperf.com/forintest

所以不要用它来检索对象键

function inheritedKeys(obj) {
var ret = [];
for(var key in obj) {
ret.push(key);
}
return ret;
}
var myobject= {"1":"a","2":"b"};
var calculation = inheritedKeys(myobject);

使用它,它更干净、更容易阅读、速度更快

var myobject= {"1":"a","2":"b"};
var calculation = Object.keys(myobject);

<小时/>这是一个比较 for 与数组一起使用和普通 for 循环的测试。

http://jsperf.com/forinarray

您可以看到 for 循环速度更快。

不要使用这个

function iteratesOverArray() {
var arr = [1, 2, 3];
var newArr = [];
for (var index in arr) {
newArr.push(index);
}
return newArr;
}
var arr = iteratesOverArray();

用这个代替

function iteratesOverArray() {
var arr = [1, 2, 3];
var newArr = [];
for (var i=0,l=arr.length-1;i<=l;i++) {
newArr.push(i);
}
return newArr;
}
var arr = iteratesOverArray();

关于javascript - 关于优化 for-in 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32241704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com