We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
去重在工作是非常常见的了,掌握去重方法也是很有必要。
下面就开始看例子吧。
实现一:
Array.prototype.unique = function () { const newArray = []; let isRepeat; for (let i = 0; i < this.length; i++) { isRepeat = false; for (let j = 0; j < newArray.length; j++) { if (this[i] === newArray[j]) { isRepeat = true; break; } } if (!isRepeat) { newArray.push(this[i]); } } return newArray; }
实现二:
Array.prototype.unique = function () { const newArray = []; let isRepeat; for (let i = 0; i < this.length; i++) { isRepeat = false; for (let j = i + 1; j < this.length; j++) { if (this[i] === this[j]) { isRepeat = true; break; } } if (!isRepeat) { newArray.push(this[i]); } } return newArray; }
实现三:
Array.prototype.unique = function () { const newArray = []; for (let i = 0; i < this.length; i++) { for (let j = i + 1; j < this.length; j++) { if (this[i] === this[j]) { j = ++i; } } newArray.push(this[i]); } return newArray; }
基本思路:如果索引不是第一个索引,说明是重复值。
Array.prototype.unique = function () { return this.filter((item, index) => { return this.indexOf(item) === index; // 只将数组中元素第一次出现的返回, 后面的被过滤掉 }) }
let arr = [1, 2, 3, 22, 233, 22, 2, 233, 'a', 3, 'b', 'a']; Array.prototype.unique = function () { const newArray = []; this.forEach(item => { if (newArray.indexOf(item) === -1) { newArray.push(item); } }); return newArray; }
基本思路:先对原数组进行排序,然后再进行元素比较。 实现一:
Array.prototype.unique = function () { const newArray = []; this.sort(); for (let i = 0; i < this.length; i++) { if (this[i] !== this[i + 1]) { newArray.push(this[i]); } } return newArray; }
Array.prototype.unique = function () { const newArray = []; this.sort(); for (let i = 0; i < this.length; i++) { if (this[i] !== newArray[newArray.length - 1]) { newArray.push(this[i]); } } return newArray; }
Array.prototype.unique = function () { const newArray = []; this.forEach(item => { if (!newArray.includes(item)) { newArray.push(item); } }); return newArray; }
Array.prototype.unique = function () { return this.sort().reduce((init, current) => { if(init.length === 0 || init[init.length - 1] !== current){ init.push(current); } return init; }, []); }
基本思路:利用了对象的key不可以重复的特性来进行去重。
Array.prototype.unique = function () { const newArray = []; const tmp = {}; for (let i = 0; i < this.length; i++) { if (!tmp[typeof this[i] + this[i]]) { tmp[typeof this[i] + this[i]] = 1; newArray.push(this[i]); } } return newArray; }
Array.prototype.unique = function () { const newArray = []; const tmp = new Map(); for(let i = 0; i < this.length; i++){ if(!tmp.get(this[i])){ tmp.set(this[i], 1); newArray.push(this[i]); } } return newArray; }
Array.prototype.unique = function () { const tmp = new Map(); return this.filter(item => { return !tmp.has(item) && tmp.set(item, 1); }) }
Array.prototype.unique = function () { const set = new Set(this); return Array.from(set); } // 或 Array.prototype.unique = function () { return [...new Set(this)]; }
参考文章:https://juejin.im/post/5b0284ac51882542ad774c45#comment
The text was updated successfully, but these errors were encountered:
No branches or pull requests
去重在工作是非常常见的了,掌握去重方法也是很有必要。
下面就开始看例子吧。
双重循环
实现一:
实现二:
实现三:
indexOf()
基本思路:如果索引不是第一个索引,说明是重复值。
实现一:
实现二:
sort()
基本思路:先对原数组进行排序,然后再进行元素比较。
实现一:
实现二:
includes()
reduce()
对象键值对
基本思路:利用了对象的key不可以重复的特性来进行去重。
Map
实现一:
实现二:
Set
参考文章:https://juejin.im/post/5b0284ac51882542ad774c45#comment
The text was updated successfully, but these errors were encountered: