详解JavaScript数组和字符串中去除重复值的方法
内容摘要
原理在代码中表现得非常清晰,我们直接来看代码例子:
var ages = array.map(function(obj) { return obj.age; });
ages = ages.filter(function(v,i) { return ages.inde
var ages = array.map(function(obj) { return obj.age; });
ages = ages.filter(function(v,i) { return ages.inde
文章正文
原理在代码中表现得非常清晰,我们直接来看代码例子:
1 2 3 4 | var ages = array .map( function (obj) { return obj.age; }); ages = ages.filter( function (v,i) { return ages.indexOf(v) == i; }); console.log(ages); //=> [17, 35] |
1 2 3 4 5 | function isBigEnough(element) { return element >= 10; } var filtered = [12, 5, 8, 130, 44].filter(isBigEnough); // filtered is [12, 130, 44] |
1 2 3 4 5 6 7 | function onlyUnique(value, index, self) { return self.indexOf(value) === index; } // usage example: var a = [ 'a' , 1, 'a' , 2, '1' ]; var unique = a.filter( onlyUnique ); // returns ['a', 1, 2, '1'] |
比较好使的Function(不兼容IE7)
1 2 3 4 5 | function unique( array ){ return array .filter( function (el, index, arr) { return index == arr.indexOf(el); }); } |
比较好使的Function(兼容IE7)
1 2 3 4 5 6 7 8 9 10 11 12 | //去除数组中重复值 function getNoRepeat(s) { return s.sort().join( ",," ).replace(/(,|^)([^,]+)(,,\2)+(,|$)/g, "$1$2$4" ).replace(/,,+/g, "," ).replace(/,$/, "" ).split( "," ); } var arr = [ "北京" , "上海" , "天津" , "武汉" , "上海" , "天津" , "武汉" , "北京" , "上海" , "天津" , "武汉" , "天津" , "武汉" , "天津" , "武汉" , "天津" , "武汉" , "北京" , "上海" , "天津" , "武汉" , "上海" , "天津" , "武汉" , "北京" , "上海" , "天津" , "武汉" , "天津" , "武汉" , "天津" , "武汉" , "天津" , "武汉" , "北京" , "上海" , "天津" , "武汉" , "上海" , "天津" , "武汉" , "北京" , "上海" , "天津" , "武汉" , "天津" , "武汉" , "天津" , "武汉" , "天津" , "武汉" ]; arr = getNoRepeat(arr); alert(arr.length); // 4 alert(arr.toString()); // "北京", "上海", "天津", "武汉" |
利用map原理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var arr = [ "北京" , "上海" , "天津" , "武汉" , "上海" , "天津" , "武汉" , "北京" , "上海" , "天津" , "武汉" , "天津" , "武汉" , "天津" , "武汉" , "天津" , "武汉" , "北京" , "上海" , "天津" , "武汉" , "上海" , "天津" , "武汉" , "北京" , "上海" , "天津" , "武汉" , "天津" , "武汉" , "天津" , "武汉" , "天津" , "武汉" , "北京" , "上海" , "天津" , "武汉" , "上海" , "天津" , "武汉" , "北京" , "上海" , "天津" , "武汉" , "天津" , "武汉" , "天津" , "武汉" , "天津" , "武汉" ]; var json = {}; for ( var i = 0; i < arr.length; i++){ json[arr[i]] = arr[i]; } arr = new Array(); for ( var key in json){ arr.push(key); } alert(arr.toString()); // "北京", "上海", "天津", "武汉" |
代码注释