//数组去重,需要考虑到{}
//第一种,借用对象关键字的唯一性
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面试笔试题
最新推荐文章于 2024-07-09 19:23:02 发布