如何停止JavaScript for循环?
我使用此JavaScript遍历数组并查找匹配的数组元素:如何停止JavaScript for循环?,javascript,for-loop,Javascript,For Loop,我使用此JavaScript遍历数组并查找匹配的数组元素: var remSize = [], szString, remData, remIndex, i; for (i = 0; i < remSize.length; i++) { // I'm looking for the index i, when the condition is true remSize[i].size == remData.size ? remIndex = i :
var remSize = [],
szString, remData, remIndex, i;
for (i = 0; i < remSize.length; i++) {
// I'm looking for the index i, when the condition is true
remSize[i].size == remData.size ? remIndex = i : remIndex = -1;
}
var remSize=[],
szString、remData、remendex、i;
对于(i=0;i
数组包含这些“大小”:[“34”、“36”、“38”…]
remData.size
是我要查找的“大小”(例如“36”)
如果要搜索的大小在索引中,我需要返回索引
I
。否则我需要返回-1
。有更好的方法吗?要在JavaScript早期停止for
循环,请使用:
数组#查找
:
var remSize = [],
szString,
remData,
remEntry;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remEntry = remSize.find(function(entry) {
return entry.size === remData.size;
});
Array#findIndex
在回调第一次返回truthy值时停止,将该调用的索引返回回调;如果回调从未返回真实值,则返回-1
Array#find
在找到您要查找的内容时也会停止,但它返回的是条目,而不是索引(或者undefined
,如果回调从未返回真实值)
如果您使用的是与ES5兼容的环境(或ES5垫片),则可以使用新的on Array,它将调用回调,直到回调返回truthy值:
var remSize = [],
szString,
remData,
remIndex;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remIndex = -1; // <== Set a default if we don't find it
remSize.some(function(entry, index) {
if (entry.size === remData.size) {
remIndex = index;
return true; // <== Equivalent of break for `Array#some`
}
});
逻辑是错误的。它将始终返回数组中最后一个元素的结果
remIndex = -1;
for (i = 0; i < remSize.length; i++) {
if (remSize[i].size == remData.size) {
remIndex = i
break;
}
}
rementex=-1;
对于(i=0;i
改用of循环,这是ES2015版本的一部分。与forEach不同,我们可以使用return、break和continue。看
我知道这有点旧,但是使用方法
.indexOf([,fromIndex])
它在数组中循环,查找并返回值的第一个索引。如果数组中不包含该值,则返回-1
是要查看的数组,
是要查找的值,[fromIndex]
是要从中开始的索引(默认值为0)
我希望这有助于减少代码的大小 es6的良好使用,我认为这是这里最好的答案之一。事实上,我认为这是这里最好的答案——这是最简洁的方法(“最简洁、直接的语法,用于循环数组元素”,正如Mozilla Hacks在答案中的链接中所说)。我们应该尽可能地利用ES6的新功能(并从中受益),以此来回报ES6付出的所有辛勤工作。使用return语句是一个很好的方法。谢谢@T.J。Crowder@T.J.Crowder哪个语句是好的方法:返回false还是break?@Ilyaskarim:您使用适合您正在使用的构造的语句(
break
在for
循环中,在jQuery中返回false
。每个,在部分中返回true
,…)。这并没有回答标题问题:如何停止JavaScript for循环?
它确实回答了是否有更好的方法返回匹配的索引/-1(如果没有)。
var remSize = [],
szString,
remData,
remIndex;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remIndex = -1; // <== Set a default if we don't find it
remSize.some(function(entry, index) {
if (entry.size === remData.size) {
remIndex = index;
return true; // <== Equivalent of break for `Array#some`
}
});
var remSize = [],
szString,
remData,
remIndex;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remIndex = -1; // <== Set a default if we don't find it
jQuery.each(remSize, function(index, entry) {
if (entry.size === remData.size) {
remIndex = index;
return false; // <== Equivalent of break for jQuery.each
}
});
remIndex = -1;
for (i = 0; i < remSize.length; i++) {
if (remSize[i].size == remData.size) {
remIndex = i
break;
}
}
let arr = [1,2,3,4,5];
for (let ele of arr) {
if (ele > 3) break;
console.log(ele);
}