ในการหยุดการfor
วนซ้ำในช่วงต้นของ JavaScript คุณใช้break
:
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 (aka ES6) สำหรับกรณีการใช้งานที่เฉพาะเจาะจงนี้คุณสามารถใช้Array#findIndex
(เพื่อค้นหาดัชนีของรายการ) หรือArray#find
(เพื่อค้นหารายการนั้นเอง) ซึ่งทั้งสองอย่างนี้สามารถ shimmed / polyfilled:
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;
});
Array#find
:
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
หยุดในครั้งแรกที่การโทรกลับส่งคืนค่าที่แท้จริงโดยส่งคืนดัชนีสำหรับการโทรนั้นไปยังการเรียกกลับ จะส่งคืน-1
หากการโทรกลับไม่ส่งคืนค่าที่แท้จริง Array#find
ยังหยุดเมื่อพบสิ่งที่คุณกำลังมองหา แต่จะส่งกลับรายการไม่ใช่ดัชนี (หรือundefined
หากการเรียกกลับไม่ส่งคืนค่าที่แท้จริง)
หากคุณใช้สภาพแวดล้อมที่เข้ากันได้กับ ES5 (หรือ ES5 shim) คุณสามารถใช้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
remSize.some(function(entry, index) {
if (entry.size === remData.size) {
remIndex = index;
return true; // <== Equivalent of break for `Array#some`
}
});
หากคุณใช้ jQuery คุณสามารถใช้jQuery.each
เพื่อวนผ่านอาร์เรย์ ซึ่งจะมีลักษณะดังนี้:
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
}
});