Possible Duplicate:
Easiest way to find duplicate values in a JavaScript array
jQuery.unique on an array of strings
I'm trying to get a neighbor list by breadth-first search (to be specific: the indexes of same color neighbor balls in Block'd) my function getWholeList(ballid) return an array like
thelist=["ball_1","ball_13","ball_23","ball_1"] and of course there are duplicates.
I tried to remove them with jQuery.unique(); but it does not work with strings I guess, so is there any way for this(making the array unique) ?
Thanks for any help..
The jQuery unique method only works on an array of DOM elements.
You can easily make your own uniqe function using the each and inArray methods:
function unique(list) { var result = []; $.each(list, function(i, e) { if ($.inArray(e, result) == -1) result.push(e); }); return result; } Demo: http://jsfiddle.net/Guffa/Askwb/
As a non jquery solution you could use the Arrays filter method like this:
var thelist=["ball_1","ball_13","ball_23","ball_1"], thelistunique = thelist.filter( function(a){if (!this[a]) {this[a] = 1; return a;}}, {} ); //=> thelistunique = ["ball_1", "ball_13", "ball_23"] As extension to Array.prototype (using a shortened filter callback)
Array.prototype.uniq = function(){ return this.filter( function(a){return !this[a] ? this[a] = true : false;}, {} ); } thelistUnique = thelist.uniq(); //=> ["ball_1", "ball_13", "ball_23"] [Edit 2017] An ES6 take on this could be:
const unique = arr => [...new Set(arr)]; const someArr = ["ball_1","ball_13","ball_23","ball_1", "ball_13", "ball_1" ]; console.log( unique(someArr) ); If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With