Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何停止JavaScript for循环?_Javascript_For Loop - Fatal编程技术网

如何停止JavaScript for循环?

如何停止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 :

我使用此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 : 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);
}