说说你常用的技术栈?
ajax解决跨域问题的方法?jsonp的主要实现原理?
点击页面某个按钮,将原本一行显示的内容分成两行,如何实现?
怎样实现段首缩进?值是什么?
如何实现文本限制显示两行,多出来的用省略号表示?
js ‘== ’ 和 ‘===’ 举个栗子 ?
js数组去重的方法(至少说三种ES6 set,双层递归,排序后与左右两边进行比较)
js中 字符串 数值 ‘3’ 3 字符串-数值’3‘-3 字符数 ’a‘ 3 = NaN
数组去重
方法一:先排序,后去重
function delSame (arr){var arr1 = arr.sort();var res =[arr1[0]];var len = arr1.length;for(var i=1;i<len;i ){if(arr1[i]!==res[res.length-1]){res.push(arr1[i]);}}return res;
}console.log(delSame([2,4,1,4]));
res保存原数组的第一个数值,然后从arr中第二位开始的数字开始,和res中已经保存的数字进行比较,如果不重复,就把arr[i]加入res数组中去。
方法二:
Array.prototype.unique=function(){var res = [];var json = {};for(var i=0;i<this.length;i ){if(!json[this[i]]){res.push(this[i]);json[this[i]]=1;}}return res;
};
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
console.log(arr.unique());
1.如果arr[i]是第一次出现,就把它当做对象的属性,并赋值为1;
2.继续遍历,每次去对象中找arr[i],如果存在这个属性,说明重复了;否则,将它加入对象并给新属性赋值为1,再推入res[]中
更多专业前端知识,请上 【猿2048】www.mk2048.com