functionunique(origin) { var result = []; for (var i = 0; i < origin.length; i++) { var item = origin[i]; if (result.indexOf(item) === -1) { result.push(item); } } return result; }
functionunique(origin) { var result = origin.filter(function(item, index, array) { // 获取元素在源数组的位置,只返回那些索引等于当前元素索引的值。 return array.indexOf(item) === index; }); return result; }
filter 兼容到 IE9, 这种方法没有 for 循环,主要利用了 filter 和 indexOf 属性,所以代码相对比较优雅。
四、利用 Object 的 key value
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
functionunique(origin) { var result = []; var hashTable = {}; for (var i = 0; i < origin.length; i++) { // 如果键对应的值,为真,意味着对象的键中已经有重复的键了。 if (!hashTable[origin[i]]) { // 将元素作为对象的键,默认键对应的值为 true, hashTable[origin[i]] = true;
functionunique(origin) { var result = []; var hashTable = {}; for (var i = 0; i < origin.length; i++) { var current = origin[i]; // 字符串拼接元素的类型和元素 var key = typeof current + current; if (!hashTable[key]) { hashTable[key] = true; result.push(current); } } return result; }