Để dừng for
vòng lặp sớm trong JavaScript, bạn sử dụng 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
}
}
Nếu bạn đang ở trong môi trường ES2015 (còn gọi là ES6), trong trường hợp sử dụng cụ thể này, bạn có thể sử dụng Array#findIndex
(để tìm chỉ mục của mục nhập) hoặc Array#find
(để tìm chính mục đó), cả hai đều có thể được shimmed / polyfilt:
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
dừng lần đầu tiên cuộc gọi lại trả về giá trị trung thực, trả lại chỉ mục cho cuộc gọi đó cho cuộc gọi lại; nó trả về -1
nếu cuộc gọi lại không bao giờ trả về giá trị trung thực. Array#find
cũng dừng lại khi tìm thấy những gì bạn đang tìm kiếm, nhưng nó trả về mục nhập, không phải chỉ mục của nó (hoặc undefined
nếu cuộc gọi lại không bao giờ trả về giá trị trung thực).
Nếu bạn đang sử dụng môi trường tương thích ES5 (hoặc shim ES5), bạn có thể sử dụng some
chức năng mới trên mảng, gọi lại cuộc gọi cho đến khi cuộc gọi lại trả về giá trị trung thực:
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`
}
});
Nếu bạn đang sử dụng jQuery, bạn có thể sử dụng jQuery.each
để lặp qua một mảng; nó sẽ trông như thế này:
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
}
});