Array.prototype.RemoveRepeat= function () { // 构建一个新数组存放结果 var newArray = []; // 创建一个空对象 var object = {}; // for循环时,每次取出一个元素与对象进行对比 // 如果这个元素不重复,则将它存放到结果数中 // 同时把这个元素的内容作为对象的一个属性,并赋值为1, // 存入到第2步建立的对象中 for (var i = 0; i < this.length; i++){ // 检测在object对象中是否包含遍历到的元素的值 if(!object[typeof(this[i]) + this[i]]) { // 如果不包含,将存入对象的元素的值推入到结果数组中 newArray.push(this[i]); // 如果不包含,存入object对象中该属性名的值设置为1 object[typeof(this[i]) + this[i]] = 1; } } return newArray; }
思路:对象键值对法
- 创建一个JavaScript对象以及新数组
- 使用
for
循环遍历原数组,每次取出一个元素与JavaScript对象的键做对比 - 如果不包含,将存入对象的元素的值推入到结果数组中,并且将存入
object
对象中该属性名的值设置为1
- 注:【
1】
和【'1'】
无法区分。
测试: