蘑菇街一电话面试1

说说你常用的技术栈?

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[]中

posted @ 2018-04-19 21:37  SingSingaSong  阅读(271)  评论(0编辑  收藏  举报