2014-09-04 8 views
21

मेरी कोड में सरणी धक्का में डुप्लिकेट को रोकने के लिए इस तरह है:कैसे AngularJS

var arr = []; 
arr.push(item1,item2); 

तो arr की तरह शामिल होंगे: [ "नाम", "thing1"]

लेकिन मैं समस्या है जब मिल गया समान सटीक मान वाले तत्व को दबाकर, मैं समान तत्व मान कैसे फ़िल्टर करूं लेकिन फिर भी अद्यतन/परिवर्तन स्वीकार कर रहा हूं। JSFIDDLE

+0

आप jQuery के 'grep' उपयोग कर सकते हैं। [इसे देखें] (http://stackoverflow.com/a/7364307/4365626) –

उत्तर

7

बस जावास्क्रिप्ट पर्याप्त है।

एक सरणी आइटम अपने सूचकांक है शामिल है, तो> = 0

तो आप ऐसा कर सकते हैं, अगर सूचकांक == -1, आइटम सरणी में मौजूद नहीं है, तो आप अद्वितीय आइटम

धक्का कर सकते हैं
if(arr.indexOf(item) == -1) { 
    arr.push(item); 
} 

संपादित करें: आप नंबर बदलने के लिए कहा, यह कैसे

var index = arr.indexOf(item); 
if(index > -1) { //checking if item exist in array 
    arr[index]++; // you can access that element by using arr[index], 
       // then change it as you want, I'm just incrementing in above example 
} 
+0

मैंने इसका उपयोग करने की कोशिश की, लेकिन काम नहीं कर रहा। और मैं अभी भी सरणी में संख्या अपडेट करना चाहता हूं, सरणी –

+0

के अंत में पूरे तत्व को धक्का न दें संशोधित उदाहरण – Vamsi

41

आपउपयोग कर सकते हैंजो 1 देता है यदि यह नहीं मिला है, तो आप इसे जोड़ सकते हैं।

उदा।

if (arr.indexOf(item) == -1) { 
    arr.push(item); 
} 

हालांकि, इस वर्ष ब्राउज़रों में काम नहीं करता है ...

JQuery एक विधि ($.indexOf) है कि हर ब्राउज़र में काम करता है, यहां तक ​​कि बहुत पुराने लोगों की है।

+0

बहुत अच्छा काम करता है ... धन्यवाद! –

2

जैसा कि अधिकांश उत्तरों ने इंगित किया है, आप यह निर्धारित करने के लिए Array.prototype.indexOf() विधि का उपयोग कर सकते हैं कि कोई मान मौजूद है या नहीं। इसके लिए जांचने के लिए, ng-change() ईवेंट कॉलबैक के भीतर, अपने ng-models मूल्य गुण, selects.value के विरुद्ध तारों की सरणी की जांच करें।

DEMO

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

$scope.goChange = function(name, value){ 
    if(!~arr.indexOf(value)) { 
      arr.push(name, value); 
      console.log(arr); 
    } 
}; 

एचटीएमएल

<select ng-model="selects" ng-change="goChange(item.name, selects.value)" ng-options="i as i.value for i in options"> 
    <option value=""></option> 
</select>