//数组去重,需要考虑到{} //第一种,借用对象关键字的唯一性 function uniq(arr) { let turnObject = {};//对象关键字的唯一性 let uniqArr = []; for(let i = 0, l = arr.length; i < l;i++){ if(!turnObject[arr[i]] || arr[i] instanceof Object){//判断是否为空或者是否是{} turnObject[arr[i]] = arr[i]; uniqArr.push(arr[i]); } } return uniqArr; } var arr = [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN]; var arr1 = [1,1,1,2,2,4,3,3,6,7,5]; //第二种,利用es5中的indexOf方法、 function upRemove(arr){ let uniqArr = []; for(let i = 0 ,l = arr.length ; i < l; i++){ if(uniqArr.indexOf(arr[i]) == -1 || arr[i] instanceof Object){ uniqArr.push(arr[i]); } } //console.log(uniqArr); return uniqArr; } upRemove(arr); //第三种,利用es6的set结构 let useSetRemove = (arr)=>[...new Set(arr)]; //console.log(useSetRemove(arr)); //统计字符串中每个字符的出现频率,考虑空格 function count(str) { let countObject = {}; str = str.split(' ').join();//使用split分割字符串,使其没有空格,在拼接成一个字符串 for(let i = 0, l = str.length; i < l; i++){ if(str[i] != ','){//去掉字符串中的逗号 if(!countObject[str[i]]){ countObject[str[i]] = 1; }else{ countObject[str[i]] += 1; } } } return countObject; } count('hello world'); //获取含有汉字的字符串的长度 function strLength(str, bUnicode255For1) { var realLength = 0, len = str.length, charCode = -1; for (var i = 0; i < len; i++) { charCode = str.charCodeAt(i); if (charCode >= 0 && charCode <= 255) realLength += 1; else realLength += 2; } // console.log(realLength); return realLength; } // strLength('hello world, 牛客',false); //将字符串转换为驼峰格式 const sName = " -webkit-border-image-"; const str = sName.replace(/(?!^)\-(\w)(\w+)/g, (a, b, c) => { return b.toUpperCase() + c.toLowerCase(); }).replace("-", ""); //console.log(str); //作用域的考察 function doSomething(){ for(var i = 0; 4 > i; i++) { var k = 100; aMrg +=',' + (k + i); } } var k = 1,aMrg = k; doSomething(); aMrg +=k; //console.log(aMrg);//1,100,101,102,1031 //获取url ? 后面的参数,并将参数对象化 function parseQueryString(url){ var params = {}; var arr = url.split("?"); if(arr.length == 0){ return params; } arr = arr[1].split("&"); for(let i = 0, l = arr.length; i < l; i++){ let a = arr[i].split("="); params[a[0]] = a[1]; } return params; } var url = "www.baidu.com?name=123&key=123123&syn=1"; var ps = parseQueryString(url); //console.log(ps); //数组的随机排序 //方法一:使用随机获取数组下标,并与前面的数交换位置 var arr = [1,'a',3,4,'f',6,'c',8,9,10]; function randSort1(arr){ for(var i = 0,len = arr.length;i < len; i++ ){ var rand = parseInt(Math.random()*len); var temp = arr[rand]; arr[rand] = arr[i]; arr[i] = temp; } return arr; } //console.log(randSort1(arr)); //方法三:使用sort函数 var arr = [1,'a',3,4,'f',6,'c',8,9,10]; arr.sort(function(){ return Math.random() - 0.5; }) //console.log(arr); //二分查找 //递归 function binarySearch(data, dest, start = 0, end = data.length -1){ m = Math.floor((start + end) / 2); if(data[m] == dest){ return m; } if(dest < data[m]){ return binarySearch(data, dest, 0, m-1); }else{ return binarySearch(data, dest, m+1, end); } return false; } var arr = [-34, 1, 3, 4, 5, 8, 34, 45, 65, 87]; //console.log(binarySearch(arr,4)); //非递归 function binarySearch1(data, dest){ var h = data.length - 1, l = 0; while(l <= h){ var m = Math.floor((h + l) / 2); if(data[m] == dest){ return m; } if(dest > data[m]){ l = m + 1; }else{ h = m - 1; } } return false; } var arr = [-34, 1, 3, 4, 5, 8, 34, 45, 65, 87]; //console.log(binarySearch1(arr,4));
几个js面试笔试题
猜你喜欢
转载自blog.csdn.net/sjw1039115768/article/details/80470098
今日推荐
周排行