angularjs कोणीय जेएस ब्रेक प्रत्येक के लिए




javascript-framework (15)

मुझे एहसास है कि यह पुराना है, लेकिन एक सरणी फ़िल्टर जो आपको चाहिए वह कर सकता है:

var arr = [0, 1, 2].filter(function (count) {
    return count < 1;
});

फिर आप arr.forEach और अन्य सरणी कार्यों को चला सकते हैं।

मुझे एहसास है कि यदि आप पूरी तरह से लूप ऑपरेशंस पर कटौती करना चाहते हैं, तो शायद यह वही नहीं होगा जो आप चाहते हैं। इसके लिए आप सबसे अच्छा उपयोग while

मेरे पास एक कोणीय फोरैच लूप है और यदि मैं मान से मेल खाता हूं तो मैं लूप से तोड़ना चाहता हूं। निम्नलिखित कोड काम नहीं करता है।

angular.forEach([0,1,2], function(count){
  if(count == 1){
    break;
  }
});

मैं इसे कैसे प्राप्त कर सकता हूं?


ऐसा करने का कोई तरीका नहीं है। 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;
    }
  }
});

forEach , आप forEach लूप के लिए बाहर निकल सकते हैं, और किसी भी जगह, अपवाद फेंक सकते हैं।

try {
   angular.forEach([1,2,3], function(num) {
      if (num === 2) throw Error();
   });
} catch(e) {
    // anything
}

हालांकि, यदि आप अन्य लाइब्रेरी का उपयोग करते हैं या अपने स्वयं के फ़ंक्शन को कार्यान्वित करते हैं, तो इस मामले में एक find फ़ंक्शन बेहतर होता है, इसलिए आपका कोड उच्चतम स्तर है।


कृपया ForEach के कुछ या हर उदाहरण का उपयोग करें,

Array.prototype.some:
some is much the same as forEach but it break when the callback returns true

Array.prototype.every:
every is almost identical to some except it's expecting false to break the loop.

कुछ के लिए उदाहरण:

var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];

ary.some(function (value, index, _ary) {
    console.log(index + ": " + value);
    return value === "JavaScript";
});

प्रत्येक के लिए उदाहरण:

var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];

ary.every(function(value, index, _ary) {
    console.log(index + ": " + value);
    return value.indexOf("Script") > -1;
});

अधिक जानकारी प्राप्त करें
http://www.jsnoob.com/2013/11/26/how-to-break-the-foreach/


आप इसका उपयोग कर सकते हैं:

var count = 0;
var arr = [0,1,2];
for(var i in arr){
   if(count == 1) break;
   //console.log(arr[i]);
}

ऐरे कुछ विधि का प्रयोग करें

 var exists = [0,1,2].some(function(count){
      return count == 1
 });

अस्तित्व सच हो जाएगा, और आप इसे अपने फ़ंक्शन में एक चर के रूप में उपयोग कर सकते हैं

if(exists){
    console.log('this is true!')
}

ऐरे कुछ विधि - जावास्क्रिप्ट


मैं इसे बदले में करना पसंद करूंगा। लूपिंग भाग को निजी फ़ंक्शन में रखें और जब आप लूप को तोड़ना चाहते हैं तो वापस आएं।


अन्य उत्तर राज्य के रूप में, कोणीय इस कार्यक्षमता प्रदान नहीं करता है। jQuery हालांकि करता है, और यदि आपने jQuery और कोणीय को लोड किया है, तो आप इसका उपयोग कर सकते हैं

jQuery.each ( array, function ( index, value) {
    if(condition) return false; // this will cause a break in the iteration
})

http://api.jquery.com/jquery.each/ देखें


इसे ब्रेक के रूप में आज़माएं;

angular.forEach([0,1,2], function(count){
  if(count == 1){
    return true;
  }
});

break लिए कोणीय में प्राप्त करना संभव नहीं है, हमें ऐसा करने के लिए प्रत्येक को संशोधित करने की आवश्यकता है।

$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
                  }
                });

angular.forEach लूप एक शर्त मैच पर तोड़ नहीं सकता है।

मेरी व्यक्तिगत सलाह है angular.forEach बजाय एक angular.forEach फॉर लूप का उपयोग angular.forEachangular.forEach

लूप के लिए नेटिव लगभग 90% तेज है और लूप के लिए अन्य है।

अनगिनत में लूप के लिए उपयोग करें:

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.');
}

यदि आप AngularJS के साथ jQuery (इसलिए jqLite नहीं) का उपयोग करते हैं तो आप $ .each के साथ पुनरावृत्ति कर सकते हैं - जो बुलियन रिटर्न वैल्यू एक्सप्रेशन के आधार पर तोड़ने और जारी रखने की अनुमति देता है।

JSFiddle:

http://jsfiddle.net/JEcD2/1/

जावास्क्रिप्ट:

var array = ['foo', 'bar', 'yay'];
$.each(array, function(index, element){
    if (element === 'foo') {
        return true; // continue
    }
    console.log(this);
    if (element === 'bar') {
        return false; // break
    }
});

ध्यान दें:

हालांकि jQuery का उपयोग करना बुरा नहीं है, दोनों देशी Array.some या Array.every कार्यों को Array.every द्वारा अनुशंसित किया जाता है क्योंकि आप मूल रूप से developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… दस्तावेज़ के लिए पढ़ सकते हैं:

"प्रत्येक लूप को रोकने या तोड़ने का कोई तरीका नहीं है। समाधान Array.every या Array.some का उपयोग करना है"

निम्नलिखित उदाहरण एमडीएन द्वारा प्रदान किए जाते हैं:

Array.some:

function isBigEnough(element, index, array){
    return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed is false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed is true

Array.every:

function isBigEnough(element, index, array){
    return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true

यह उदाहरण काम करता है। कोशिश करो।

var array = [0,1,2];
for( var i = 0, ii = array.length; i < ii; i++){
  if(i === 1){
   break;
  }
}

बस $ इंडेक्स जोड़ें और निम्न कार्य करें:

angular.forEach([0,1,2], function(count, $index) {
     if($index !== 1) {
          // do stuff
     }
}

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)
            }

        }      
    });
});






javascript-framework