在Java中,您可以使用for
循环遍历数组中的对象,如下所示:
String[] myStringArray = {"Hello", "World"};
for (String s : myStringArray)
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
你能用JavaScript做同样的事吗?
获取包含对象的数组的索引的最佳方法是什么?
想象一下这种情况:
var hello = {
hello: 'world',
foo: 'bar'
};
var qaz = {
hello: 'stevie',
foo: 'baz'
}
var myArray = [];
myArray.push(hello,qaz);
Run Code Online (Sandbox Code Playgroud)
现在我想拥有属性indexOf
的对象,在这个例子中,它将是.hello
'stevie'
1
我是JavaScript的新手,我不知道是否有一个简单的方法,或者我是否应该构建自己的函数来做到这一点.
我听过很多次了.向后计数时JavaScript循环真的更快吗?如果是这样,为什么?我已经看到一些测试套件示例显示反向循环更快,但我找不到任何解释为什么!
我假设它是因为循环不再需要在每次检查它是否完成时评估属性并且它只是检查最终的数值.
即
for (var i = count - 1; i >= 0; i--)
{
// count is only evaluated once and then the comparison is always on 0.
}
Run Code Online (Sandbox Code Playgroud) JQuery有两个版本供下载,一个是Production(19KB,Minified和Gzipped),另一个是Development(120KB,Uncompressed Code).
现在是紧凑的19kb版本,如果你下载它,你会看到仍然是一个javascript可执行代码.他们是如何紧凑的呢?我怎么能像这样'缩小'我的代码呢?
这两个关键字在范围界定方面的差异已经在这里进行了彻底的讨论,但我想知道两者之间是否存在任何性能差异,如果是这样,它是否可以忽略不计,或者在什么时候会变得显着?
我在浏览,我发现了这个:
var i, len;
for(i = 0, len = array.length; i < len; i++) {
//...
}
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是:
是否正常循环(不缓存长度的循环)array.length
每次检查?
给定具有阵列.length
100
包含具有值的元素0
,以99
在相应的索引,其中,所述要求是找到的阵列等于元件n
:51
.
为什么使用循环从数组的开始迭代到结束比从开始到结束和结束开始更快地迭代?
const arr = Array.from({length: 100}, (_, i) => i);
const n = 51;
const len = arr.length;
console.time("iterate from start");
for (let i = 0; i < len; i++) {
if (arr[i] === n) break;
}
console.timeEnd("iterate from start");
Run Code Online (Sandbox Code Playgroud)
const arr = Array.from({length: 100}, (_, i) => i);
const n = 51;
const len = arr.length;
console.time("iterate from start and end");
for (let i = 0, k …
Run Code Online (Sandbox Code Playgroud)如果这个类型字符'?'
= NonEnglish
每个将占用2个字空间,而英语将占用1个字空间,最大长度限制为10个字空间; 如何获得前10个空间.
以下示例如何获得结果This? is
?
我试图从第一个单词开始使用for循环,但我不知道如何在字符串中获取每个单词...
string = "This? is? English?? …";
var NonEnglish = "[^\u0000-\u0080]+",
Pattern = new RegExp(NonEnglish),
MaxLength = 10,
Ratio = 2;
Run Code Online (Sandbox Code Playgroud) 我试图在Ionic Framework中创建一个用于列表目的的数组,并检查所有callcenter名称的第一个char,将它们添加到字母数组中.
for (var i = 0; i < callcenterList.length; i++) {
var value = callcenterList[i]._owner && callcenterList[i]._owner.company.name[0];
if ((alphabet.indexOf(value) == -1 && isNaN(parseInt(value))) ||
(isNaN(alphabet[0]) && !isNaN(value))) {
if(!isNaN(value))
value = 123;
alphabet.push(value);
callcenterList.splice(i, 0, {
divider: {
alphabet: value
}
});
}
};
Run Code Online (Sandbox Code Playgroud)
更换value = 123
用value = '#'
的原因谷歌浏览器和谷歌Chrome金丝雀发生故障,并立即在Mac上使用最多的RAM 100%.
这是一个Javascript错误还是与Google Chrome本身有关?
在 JDK 中查看集合代码时,无论在哪里使用循环,都以相反的方式完成,如下所示:
for (int i = size-1; i >= 0; i--) {...}
Run Code Online (Sandbox Code Playgroud)
是否有任何与性能相关的东西,或者只是 JDK 像这样采用了它?
javascript ×9
arrays ×4
for-loop ×2
loops ×2
performance ×2
gzip ×1
iteration ×1
java ×1
jquery ×1
optimization ×1
scope ×1
while-loop ×1