笔试题常见js操作

js代码封装


// 获取扩展名
let filename = 'js.html';
let index = filename.lastIndexOf('.');
let suffix = filename.substring(index + 1); //从.加一 到最后
// let suffix = filename.substr(index+1);
let spl = filename.split('.');
console.log(suffix, spl[spl.length - 1]);

// 数组随机排序1
let arrpx = [1, 2, 3, 4, 6, 5, 7, 9, 8];

function randpx(arr) {
	for (let i = 0; i < arr.length; i++) {
		let rand = parseInt(Math.random() * arr.length);
		let temp = arr[rand];
		arr[rand] = arr[i];
		arr[i] = temp;
	}
	return arr;
}
console.log(randpx(arrpx));

// sort排序2
let arrpx2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arrpx2.sort(function() {
	return Math.random() - 0.5;
})
console.log(arrpx2);

let div = document.getElementById('box');
console.log(div.style['color'])

var getStyle = function(ele, attr) {
	//1.将主要功能代码写入函数中
	if (ele.currentStyle == undefined) {
		//证明当前浏览器是标准浏览器
		var bg = getComputedStyle(ele)[attr];
		return bg;
	} else {
		//否则就是在ie浏览器,就需要使用currentStyle
		var bg = ele.currentStyle[attr];
		return bg;
	}
}
console.log(getStyle(div, 'color'))


var arr1 = [1, 2, 3, 4, 5, 6, 7, 8];
//替换掉2,3 替换为 9,10
arr1.splice(1, 2, 9, 10, 11, 12);
console.log(arr1);


let str = 'asdfghhgffffieekdnwolfhqnczeeesssg';
let obj = {}; //存放每个字符的个数
let num = str.length;
for (let i = 0; i < num; i++) {
	if (obj[str.charAt(i)]) {
		obj[str.charAt(i)] = parseInt(obj[str.charAt(i)]) + 1; //个数增加
	} else {
		obj[str.charAt(i)] = 1; //设置初始值 添加
	}
}

let maxNum = 0; //次数
let maxDocument = null; //字符
for (let j in obj) {
	if (obj[j] > maxNum) {
		maxNum = obj[j];
		maxDocument = j;
	}
}
console.log('obj:', obj);
console.log('次数:', maxNum, '字符:', maxDocument);

// var a = 100; 
// function test(){ 
//     alert(a+'d'); //100
//     a = 10; 
//     alert(a+'y');//10
// } 
// test();
// alert(a+'h');//10

// 冒泡排序
// let arr = [5,4,6,2,7,1];
// for(let i=0;i<arr.length-1;i++){
// 	for(let j=0;j<arr.length-i-1;j++){
// 		if(arr[j]>arr[j+1]){
// 			let temp = arr[j+1];
// 			arr[j+1] = arr[j];
// 			arr[j] = temp;
// 		}
// 	}
// }
// console.log('arr',arr);

// 数组去重
let arr = [1, 1, 2, 3, 2, 3, 5, 6, 7, 8, 8, 7];
let narr = [];

function removeItem(arr) {
	for (let i = 0; i < arr.length; i++) {
		// 判断narr中是否已存在该值
		if (narr.indexOf(arr[i]) == -1) {
			narr.push(arr[i]);
		}
	}
	return narr;
}
console.log(removeItem(arr)); //[1, 2, 3, 5, 6, 7, 8]

// for(var i=0; i<arr.length-1; i++){//i == 1
// 	for(var j=i+1; j<arr.length; j++){//j == 2
// 		//如果遇到相同的  第i项 和 第j项 相同  就删除第j项
// 		if(arr[i]==arr[j]){
// 			arr.splice(j,1);//如果要是有几个连续重复的数组项,就不能成功去重了
// 			j--;//解决补位问题
// 		}
// 	}
// }
// console.log(arr);


var output = (function(x) {
	delete x; //只针对对象属性,不会释放内存 间接中断对象的引用
	return x;
})(0);
console.log(output); //0

var x = 1;
console.log(x, y); //1 undefined
// console.log(x,y,z);//z is not defined
var y = 2;
let z = 3; //不会提升
// console.log(x,y,z);//1 2 3

var val = 12;

function fun1() {
	console.log(val); //undefined
	var val = 20;
	console.log(val); //20
}
fun1();

// for(let i=0;i<6;i++){
// 	console.log(i,'ok');
// 	for(let i=0;i<8;i++){
// 		console.log(i,'ook')
// 	}
// }


// 快速排序
function quickSort(arr) {

	// 结束条件
	if (arr.length <= 1) return arr;

	// 找到中间数 索引
	let num = Math.floor(arr.length / 2);

	// 找到中间数 做为基准数
	let numVal = arr.splice(num, 1);

	let left = [];
	let right = [];

	for (let i = 0; i < arr.length; i++) {
		if (arr[i] < numVal) {
			left.push(arr[i]);
		} else {
			right.push(arr[i]);
		}
	}

	// 递归
	return quickSort(left).concat(numVal, quickSort(right));
}
console.log(quickSort([1, 22, 4, 3, 88, 6, 5, 34, 6, 7, 9]));

//计算字符串长度
// 一个英文字符占用一个字节,一个中文字符占用两个字节
function GetBytes(str) {
	var len = str.length;
	var bytes = len;
	for (var i = 0; i < len; i++) {
		if (str.charCodeAt(i) > 255) bytes++;
	}
	return bytes;
}
console.log(GetBytes("你好,as"));//7

//伪数组转换成数组
let arr11 = {  
 0:"hello",  
 1:12,  
 2:true,  
 length:3  
}

let a = Array.prototype.slice.call(arr11);  
let aa = [].slice.call(arr11);
console.log(arr11,a,aa)

let arr22 = {  
 0:"hello",  
 1:12,  
 2:2013,  
 3:"大学",  
 length:4  
}

let b = Array.from(arr22); 
console.log(arr22,b)

// 意外全局变量
function foo(){
	let a = b = 0;//b成了全局 window.b
	a++;
	console.log(typeof a,typeof b,a,b);
	return a;
}
foo();
console.log(typeof b,b);


//A、 B 、 C 是 3 个字符串。把 A 中包含的所有 B 都替换为 C ,如果替换以后还有 B 就继续替换,直到 A 不包含 B 为止
let a1 = 'aaabbbcccbbbffbbb';
let b1 = 'bbb';
let c1 = 'ddd';

function find(a,b,c){
	while(true){//直到a中没有b
		let num = a.indexOf(b);//确定a中b的开始下标
		console.log(num)
		if(num != -1){//查找到
			let Aarr = a.split('');//转换成数组
			a = '';
			let count = 0;
			Aarr.map((item,index)=>{
				// console.log(item,index);
				if(index>=num && index<num+b.length){
					if(count == 0){
						a += c;
					}
					count ++;
				}else{
					a += Aarr[index];
				}
			})
		}else{
			return a;
		}
	}
}
let f = find(a1,b1,c1);
console.log(f);

// 顺序颠倒  .word a is this
let strsx = "this is a word.";
function reve(str){
	let arr = str.substr(0,str.length-1).split(' ');//分割数组
	let result = str[str.length-1] + arr.reverse().join(' ');
	console.log(result);//.word a is this
	return result;
}
reve(strsx);


//找出最长的公共子串
var subS="";
    var subLen=0;
    var s1="dlajadoueowfljlj0000123456ldjfl1111111111111alfj";
    var s2="lfjaldjuaoewnn0000123456jdfjsiol1111111111111alf";
    for(let i=0;i<s1.length;i++){        
        for(let j=1;j<=s1.length-i;j++){
            if(s2.indexOf(s1.substr(i,j))<0) {
                if(j-1>subLen){
                    subLen=j-1;
                    substr=s1.substr(i,j-1);
                }
                break;
            }
        }
    }
    console.log(substr,subLen);

 

posted @ 2020-08-18 17:03  JackieDYH  阅读(2)  评论(0编辑  收藏  举报  来源