दिलचस्प पोस्ट
बैकस्टैक्स में नवीनतम टुकड़ा प्राप्त करें सम्मिलित पंक्ति की पहचान प्राप्त करने का सर्वोत्तम तरीका? जावास्क्रिप्ट समर्थन के साथ स्क्रू-स्क्रैप का एक अच्छा उपकरण क्या है? गतिशील रूप से संकुचित तत्वों को जोड़ना HTML वर्ण इकाईयों को जावास्क्रिप्ट का उपयोग करके नियमित पाठ में परिवर्तित करें अजगर – स्ट्रिंग में चार ढूंढें – क्या मैं सभी अनुक्रमित प्राप्त कर सकता हूं? शुद्ध सीएसएस का उपयोग करके क्लिक पर CSS3 के संक्रमण एल्गोरिथ्म आरजीबी को एचएसवी और एचएसवी से दोनों में आरजीबी के लिए 0-255 रेंज में कनवर्ट करना है स्प्रिंग एमवीसी यूटीएफ -8 एन्कोडिंग HTML5 के साथ रियर कैमरा सक्षम करें आवेदन के बीच अंतर क्या है। चलाएँ () और प्रपत्र। ShowDialog ()? विदेशी कुंजी बाधा पेश करने से चक्र या एकाधिक कास्टेड पथ हो सकते हैं के लिए "अस्थायी asp.NET फ़ाइलें" फ़ोल्डर क्या है? क्या MySQL कनेक्शन को बंद करना महत्वपूर्ण है? बिना किसी लूपिंग के सरणी के योग की संभावना है

जावास्क्रिप्ट में डुप्लिकेट युक्त एक सरणी से विशिष्ट मानों की सरणी कैसे प्राप्त करें?

['0','1','1','2','3','3','3'] सरणी को देखते हुए, परिणाम ['0','1','2','3']

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट में डुप्लिकेट युक्त एक सरणी से विशिष्ट मानों की सरणी कैसे प्राप्त करें?"

संपादित

ES6 समाधान:

 [...new Set(a)]; 

वैकल्पिक:

 Array.from(new Set(a)); 

पुरानी प्रतिक्रिया हे (एन ^ 2) (इसे बड़े सरणियों के साथ उपयोग नहीं करें!)

 var arrayUnique = function(a) { return a.reduce(function(p, c) { if (p.indexOf(c) < 0) p.push(c); return p; }, []); }; 

यदि आप व्यवस्था बनाए रखना चाहते हैं:

 arr = arr.reverse().filter(function (e, i, arr) { return arr.indexOf(e, i+1) === -1; }).reverse(); 

चूंकि कोई अंतर्निर्मित रिवर्स इंडेक्सफ़ोफ़ नहीं है, इसलिए मैं सरणी को उल्टा करता हूं, डुप्लिकेट को फ़िल्टर करता हूं, फिर इसे रिवर्स करें।

फ़िल्टर फ़ंक्शन वर्तमान सूचकांक (मूल सरणी से पहले) के बाद तत्व के किसी भी समय के लिए दिखता है। यदि कोई पाई जाती है, तो यह इस तत्व को बाहर कर देता है।

संपादित करें:

वैकल्पिक रूप से, आप lastindexOf का उपयोग कर सकते हैं (यदि आप ऑर्डर के बारे में परवाह नहीं करते हैं):

 arr = arr.filter(function (e, i, arr) { return arr.lastIndexOf(e) === i; }); 

यह अद्वितीय तत्व रखेगा, लेकिन केवल अंतिम घटना होगी। इसका अर्थ है कि ['0', '1', '0'] ['1', '0'] हो, नहीं ['0', '1']

यहां एक अर्रे प्रोटोटाइप फ़ंक्शन है:

 Array.prototype.unique = function() { var unique = []; for (var i = 0; i < this.length; i++) { if (unique.indexOf(this[i]) == -1) { unique.push(this[i]); } } return unique; }; 

अंडरस्कोर के साथ

 _.uniq([1, 2, 1, 3, 1, 4]); //=> [1, 2, 3, 4] 

अब 2014 लोग हैं, और समय की जटिलता अभी भी मायने रखती है!

 array.filter(function() { var seen = {}; return function(element, index, array) { return !(element in seen) && (seen[element] = 1); }; }()); 

http://jsperf.com/array-filter-unique/13

 function array_unique(arr) { var result = []; for (var i = 0; i < arr.length; i++) { if (result.indexOf(arr[i]) == -1) { result.push(arr[i]); } } return result; } 

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

तुम वहाँ जाओ! आपका स्वागत है!

 Array.prototype.unique = function() { var tmp = {}, out = []; for(var i = 0, n = this.length; i < n; ++i) { if(!tmp[this[i]]) { tmp[this[i]] = true; out.push(this[i]); } } return out; } var a = [1,2,2,7,4,1,'a',0,6,9,'a']; var b = a.unique(); alert(a); alert(b); 

आप सभी प्रकार के अरैअन अद्वितीय कार्यान्वयन यहां पा सकते हैं:

http://jsperf.com/distinct-hash-vs-comparison/12

http://jsperf.com/array-unique-functional

मैं फ़ंक्शनल शैलियों को पसंद करता हूं जैसे कि:

 var arr = ['lol', 1, 'fdgdfg', 'lol', 'dfgfg', 'car', 1, 'car', 'a', 'blah', 'b', 'c', 'd', '0', '1', '1', '2', '3', '3', '3', 'crazy', 'moot', 'car', 'lol', 1, 'fdgdfg', 'lol', 'dfgfg', 'car', 1, 'car', 'a', 'blah', 'b', 'c', 'd', '0', '1', '1', '2', '3', '3', '3', 'crazy', 'moot', 'car', 'lol', 1, 'fdgdfg']; var newarr = arr.reduce(function (prev, cur) { //console.log(prev, cur); if (prev.indexOf(cur) < 0) prev.push(cur); return prev; }, []); var secarr = arr.filter(function(element, index, array){ //console.log(element, array.indexOf(element), index); return array.indexOf(element) >= index; }); //reverses the order var thirdarr = arr.filter(function (e, i, arr) { //console.log(e, arr.lastIndexOf(e), i); return arr.lastIndexOf(e) === i; }); console.log(newarr); console.log(secarr); console.log(thirdarr); 
 function array_unique(nav_array) { nav_array = nav_array.sort(function (a, b) { return a*1 - b*1; }); var ret = [nav_array[0]]; // Start loop at 1 as element 0 can never be a duplicate for (var i = 1; i < nav_array.length; i++) { if (nav_array[i-1] !== nav_array[i]) { ret.push(nav_array[i]); } } return ret; } 

यह काम करेगा कोशिश करो।

 function getUnique(a) { var b = [a[0]], i, j, tmp; for (i = 1; i < a.length; i++) { tmp = 1; for (j = 0; j < b.length; j++) { if (a[i] == b[j]) { tmp = 0; break; } } if (tmp) { b.push(a[i]); } } return b; } 

मुझे इसका उपयोग करना पसंद है लूप का उपयोग करने में कुछ भी गलत नहीं है, मैं सिर्फ बिल्ड-इन फ़ंक्शन का उपयोग करना पसंद करता हूं। आप टाइपकास्ट या गैर-टाइपकास्ट मिलान के लिए बूलियन तर्क में भी पारित हो सकते हैं, जो उस स्थिति में आप लूप के लिए उपयोग करेंगे ( filter() विधि / फ़ंक्शन टाइपकास्ट मिलान (===))

 Array.prototype.unique = function() { return this.filter( function(val, i, arr) { return (i <= arr.indexOf(val)); } ); } 

कोई अनावश्यक "वापसी" सरणी नहीं, कोई ECMA5 (मुझे पूरा यकीन है!) और पढ़ने के लिए सरल।

 function removeDuplicates(target_array) { target_array.sort(); var i = 0; while(i < target_array.length) { if(target_array[i] === target_array[i+1]) { target_array.splice(i+1,1); } else { i += 1; } } return target_array; } 

यह तरीका है कि आप सरणी से डुप्लिकेट मान निकाल सकते हैं

 function ArrNoDupe(dupArray) { var temp = {}; for (var i = 0; i < dupArray.length; i++) { temp[dupArray[i]] = true; var uniqueArray = []; for (var k in temp) uniqueArray.push(k); return uniqueArray; } } 

एक और तरीका है कि किसी ऑब्जेक्ट को सरणी जानकारी के आरंभिक भंडारण के लिए उपयोग करना है। फिर वापस परिवर्तित करें उदाहरण के लिए:

 var arr = ['0','1','1','2','3','3','3']; var obj = {}; for(var i in arr) obj[i] = true; arr = []; for(var i in obj) arr.push(i); 

चर "arr" में अब ["0", "1", "2", "3", "4", "5", "6"] शामिल है

आप में से जो गूगल बंद लाइब्रेरी के साथ काम करते हैं, उनके निपटान goog.array.removeDuplicates , जो अद्वितीय के समान है। यह खुद सरणी बदलता है, यद्यपि।

  // Array.prototype.unique = ( function ( _where ) { return function () { for ( var i1 = 0, dups; i1 < this.length; i1++ ) { if ( ( dups = _where( this, this[i1] ) ).length > 1 ) { for ( var i2 = dups.length; --i2; this.splice( dups[i2], 1 ) ); } } return this; } } )( function ( arr, elem ) { var locs = []; var tmpi = arr.indexOf( elem, 0 ); while ( ( tmpi ^ -1 ) && ( locs.push( tmpi ), tmpi = arr.indexOf( elem, tmpi + 1 ), 1 ) ); return locs; } ); // 
 Array.prototype.unique =function(){ var uniqObj={}; for(var i=0;i< this.length;i++){ uniqObj[this[i]]=this[i]; } return uniqObj; }