루프용 자바스크립트를 중지하는 방법?
배열을 반복하고 일치하는 배열 요소를 찾기 위해 이 자바스크립트를 사용하고 있습니다.
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;
}
배열에는 다음과 같은 "크기"가 들어 있습니다.["34", "36", "38"...]
.
remData.size
제가 찾는 "사이즈"(예: "36")입니다.
인덱스를 반환해야 합니다.i
만약 내가 찾고 있는 사이즈가 인덱스에 있다면요.그렇지 않으면 다시 돌아와야 합니다.-1
. 더 좋은 방법이 없을까요?
정지하기for
자바스크립트의 초기 루프는 다음을 사용합니다.
var remSize = [],
szString,
remData,
remIndex,
i;
/* ...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
for (i = 0; i < remSize.length; i++) {
// I'm looking for the index i, when the condition is true
if (remSize[i].size === remData.size) {
remIndex = i;
break; // <=== breaks out of the loop early
}
}
ES2015(일명 ES6) 환경에 있는 경우 이 특정 사용 사례에 대해Array
의findIndex
(엔트리의 색인을 찾으려면) 또는find
(항목 자체를 찾으려면), 두 항목 모두 쉬밍/폴리밍할 수 있습니다.
var remSize = [],
szString,
remData,
remIndex;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remIndex = remSize.findIndex(function(entry) {
return entry.size === remData.size;
});
find
콜백이 처음으로 참값을 반환할 때 중지합니다. 콜백이 ( )에 대해 참값을 반환한 요소를 반환합니다.undefined
콜백이 truth 값을 반환하지 않을 경우):
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;
});
findIndex
콜백이 처음으로 truth 값을 반환할 때 중지하고 요소 대신 요소의 인덱스를 반환합니다. 를 반환합니다.-1
콜백이 truth 값을 반환하지 않는 경우.
ES5 호환 환경(또는 ES5 shim)을 사용하는 경우 어레이에서 새로운 기능을 사용하면 콜백이 참값을 반환할 때까지 콜백을 호출할 수 있습니다.
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`
}
});
jQuery를 사용하는 경우 배열을 순환하는 데 사용할 수 있으며 다음과 같습니다.
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
}
});
대신 ES2015 릴리스의 일부인 for of loop을 사용합니다.각의 경우와 달리 리턴, 브레이크 및 계속 사용할 수 있습니다.https://hacks.mozilla.org/2015/04/es6-in-depth-iterators-and-the-for-of-loop/ 참조
let arr = [1,2,3,4,5];
for (let ele of arr) {
if (ele > 3) break;
console.log(ele);
}
논리가 올바르지 않습니다.배열의 마지막 요소의 결과를 항상 반환합니다.
remIndex = -1;
for (i = 0; i < remSize.length; i++) {
if (remSize[i].size == remData.size) {
remIndex = i
break;
}
}
이것이 좀 오래된 것은 알지만, for 루프로 배열을 순환하는 대신 방법을 사용하는 것이 훨씬 더 쉬울 것입니다.<array>.indexOf(<element>[, fromIndex])
배열을 통해 루프를 형성하여 값의 첫 번째 인덱스를 찾고 반환합니다.값이 배열에 포함되어 있지 않으면 -1을 반환합니다.
<array>
확인할 수 있는 배열입니다.<element>
당신이 찾고 있는 가치입니다.[fromIndex]
는 (defaults부터 0까지) 시작하는 지수입니다.
코드 크기를 줄이는데 도움이 되었으면 좋겠습니다!
사용할 수도 있습니다.every
자바스크립트의 메소드.조건이 참이 아닐 때 실행을 중지합니다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every
remIndex = -1;
remSize.every((rem, index) => {
if (rem.size == remData.size) {
remIndex = i
return false
}
return true
})
언급URL : https://stackoverflow.com/questions/9830650/how-to-stop-a-javascript-for-loop
'programing' 카테고리의 다른 글
오류 유형: $.browser가 정의되지 않았습니다. (0) | 2023.09.28 |
---|---|
글꼴 어썸이 작동하지 않음, 아이콘이 사각형으로 표시됨 (0) | 2023.09.28 |
$http에서 이미지를 반환하는 방법.AngularJS에 들어가다 (0) | 2023.09.28 |
WooCommerce 프론트엔드에서 주문항목 메타 숨기기(관리 아님) (0) | 2023.09.28 |
MySql 이벤트가 마지막으로 실행된 시기 찾기 (0) | 2023.09.28 |