我们在日常面试中,会遇到让扩展原生js
对象能力的题目。
今天我们就来练习一下对array
的扩展。
题目要求如下:
请给Array
本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组?
在这里我们需要知道的技能点,有如下几个
- 在函数中,
this
是调用函数的对象,比如[1].push()
,在push
函数中,this
就是[1]
-
Map
对象是键值对唯一的 -
for of
函数的使用
我们上代码
(function(){
Array.prototype.pure = function() {
const arr = Array.from(this);
let map = new Map();
let tempArr = [];
for(let item of arr) {
map.has(item) ? tempArr.push(item) : map.set(item, item);
}
return tempArr;
};
window.console.log([111, 3, 5, 6, 11, 5, 1, 6, 1].pure());
})()