角度のある foreach ループがあり、値に一致する場合はループから抜けたいと思っています。次のコードは機能しません。
angular.forEach([0,1,2], function(count){
if(count == 1){
break;
}
});
どうすればこれを入手できますか?
角度のある foreach ループがあり、値に一致する場合はループから抜けたいと思っています。次のコードは機能しません。
angular.forEach([0,1,2], function(count){
if(count == 1){
break;
}
});
どうすればこれを入手できますか?
angular.forEach
条件一致でループを中断することはできません。
私の個人的なアドバイスは、の代わりにNATIVE FORループを使用することですangular.forEach
。
NATIVE FOR ループは、他の for ループよりも約90%高速です。
Angular での FOR ループの使用:
var numbers = [0, 1, 2, 3, 4, 5];
for (var i = 0, len = numbers.length; i < len; i++) {
if (numbers[i] === 1) {
console.log('Loop is going to break.');
break;
}
console.log('Loop will continue.');
}
これを行う方法はありません。https://github.com/angular/angular.js/issues/263を参照してください。あなたがしていることに応じて、ブール値を使用してループの本体に入らないようにすることができます。何かのようなもの:
var keepGoing = true;
angular.forEach([0,1,2], function(count){
if(keepGoing) {
if(count == 1){
keepGoing = false;
}
}
});
Array Some メソッドを使用する
var exists = [0,1,2].some(function(count){
return count == 1
});
exists は true を返し、これを関数内の変数として使用できます
if(exists){
console.log('this is true!')
}
具体的には、forEach
ループを終了し、どこからでも例外をスローできます。
try {
angular.forEach([1,2,3], function(num) {
if (num === 2) throw Error();
});
} catch(e) {
// anything
}
ただし、他のライブラリを使用するか、独自の関数find
(この場合は関数) を実装する方が良いため、コードは最も高レベルです。
私の知る限り、Angular はそのような機能を提供していません。これにはアンダースコアの関数を使用することをお勧めしますfind()
(これは基本的に、関数が true を返すとループから抜け出す forEach です)。
他の回答が述べているように、Angular はこの機能を提供していません。ただし、jQuery はそうです。jQuery と Angular をロードした場合は、次を使用できます。
jQuery.each ( array, function ( index, value) {
if(condition) return false; // this will cause a break in the iteration
})
http://api.jquery.com/jquery.each/を参照してください。
これを使用できます:
var count = 0;
var arr = [0,1,2];
for(var i in arr){
if(count == 1) break;
//console.log(arr[i]);
}
break
angular forEach で達成することはできません。それを行うには、forEach を変更する必要があります。
$scope.myuser = [{name: "Ravi"}, {name: "Bhushan"}, {name: "Thakur"}];
angular.forEach($scope.myuser, function(name){
if(name == "Bhushan") {
alert(name);
return forEach.break();
//break() is a function that returns an immutable object,e.g. an empty string
}
});
var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];
var keepGoing = true;
ary.forEach(function(value, index, _ary) {
console.log(index)
keepGoing = true;
ary.forEach(function(value, index, _ary) {
if(keepGoing){
if(index==2){
keepGoing=false;
}
else{
console.log(value)
}
}
});
});
私はこれをお返しにしたいと思います。ループ部分をprivate関数に入れて、ループを壊したいときに戻る。
これは古いと思いますが、配列フィルターは必要なことを行うことができます:
var arr = [0, 1, 2].filter(function (count) {
return count < 1;
});
arr.forEach
その後、他の配列関数を実行できます。
ループ操作を完全に削減するつもりなら、これはおそらくあなたが望むことにはならないでしょう。そのためには、を使用するのが最適while
です。
Return を使用してループを中断します。
angular.forEach([0,1,2], function(count){
if(count == 1) {
return;
}
});