admin 管理员组文章数量: 1086866
js 面试题之
1. 计算字符串中某个字符的个数
var aaa='1231011211009181';
function count(str){
var arr=[];
for(var i=0;i<str.length;i++){
if(str.charAt(i)=='1'){
arr.push(str.charAt(i));
}
}
return arr.length;
}
console.log(count(aaa));
2.数组去重
var arr=[1,1,1,2,2,1,3,1,3,4,5,6];
function arrDel(arr){
var result=[],
obj={};
for(var i in arr){
if(!obj[arr[i]]){ //判断对象的属性
result.push(arr[i]);
obj[arr[i]]=1;
}
}
return result;
}
console.log(arrDel(arr));
3. 数组冒泡排序
function bubbleSort(arr){
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
//获取前一个值和后一个值进行比较
if(arr[i]>arr[j]){
//创建中间变量 交换值
var cur=arr[j];
arr[j]=arr[i];
arr[i]=cur;
}
}
}
return arr;
}
4.数组快速排序
function quickSort(arr){
if(arr.length<=1){return arr};
//选基准值,可以是任意位置
var key=Math.floor(arr.length/2);
var keyValue=arr.splice(key,1)[0];
//定义两个数组
var left=[];
var right=[];
for(var i=0;i<arr.length;i++){
//小于基准的方左边、大于右边
if(arr[i]<keyValue){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
//递归
return quickSort(left).concat([keyValue],quickSort(right));
//return typeof keyValue;
}
var array=[5,1,6,4,10,11,15,0,2];
console.log(quickSort(array));
//console.log(bubbleSort(array));
5.json 对象数组排序
var data = [{
name: "海外事业部",
value: 0.58
}, {
name: "内销",
value: 0.36
}, {
name: "互联网中心",
value: 0.78
}];
function compare(a,b){
return b.value-a.value;
}
data.sort(compare);
console.log(data);
6.删除数组的第一个元素,不直接改变数组
var a=[2,1,3,4,5,8];
function delFirst(arr){
var arr2=arr.slice(0);
arr2.shift();
return arr2;
}
console.log(delFirst(a));
7.判断一个字符串中出现次数最多的字符,统计这个次数
var str='addddfffssdfsadfsdfsafjsd';
var json={}; //定义对象来存放 对象属性的值
//遍历字符串,将重复出现的字符 累加
for(var i=0;i<str.length;i++){
if(!json[str.charAt(i)]){
json[str.charAt(i)]=1;
}else{
json[str.charAt(i)]++;
}
}
var iMax=0;
var icur='';
console.log(json);//{a:3,d:8,f:7,s:6,j:1}
//遍历 json对象取最大值
for(var val in json){
if(json[val]>iMax){
iMax=json[val];
icur=val;
}
}
console.log('出现最多的字符:'+icur,'出现次数:'+iMax);
8.求一个字符串的字节长度(中文字符占两个字节)
var str='czj陈志杰';
function getStrLen(str){
var json={len:0};
var pattern=/[\u4e00-\u9fa5]/;//unicode编码符合中文字符
for(var i=0;i<str.length;i++){
if(pattern.test(str.charAt(i))){
json['len']++;
}
}
return json['len']+str.length;
}
console.log(getStrLen(str));
9.javascript面向对象中继承实现
子构造函数中执行父构造函数,并用call\apply改变this
克隆父构造函数原型上的方法
functionPerson(name){
this.name=name;
}
Person.prototype.showName=function(){
console.log(this.name);
}
Person.prototype.showJob=function(){
console.log(this.job);
}
function Student(name,job){
Person.apply(this,arguments);//改变this上下文环境
this.job=job;
}
for(var i in Person.prototype){
Student.prototype=Person.prototype;
}
newStudent('chenzhijie','student').showName();
newStudent('chenzhijie','student').showJob();
10.函数的链式调用 类似:add(1)(2)
function add(a){
var sum=a;
var tmp=function(y){
sum=sum+y;
return tmp;//为了完成链式调用
}
//以字符串的形式返回对象的原始值
tmp.toString=function(){
return sum;
};
return tmp;
}
console.log(add(1)(2)(3));//6
11. this的典型应用
事件: onclick this->触发事件的对象
构造函数: this->new 出来的object
call/apply : 改变this
12. 降低页面加载时间的方法
1. 压缩css 、js文件
2. 合并js、css文件 ,减少http请求
3. 外部js、css文件放在最底下
4.减少dom操作,尽可能用变量替代不必要的dom操作
13. Ajax工作原理
1.创建ajax对象
if(window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera,Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
2. 判断请求方式(get/post)
3. 打开连接 xmlhttp.open()
4. 发送 xmlhttp.send(null/data)
5. 当ajax对象完成第四步(onreadystatechange)数据接收完成,判断(xmlhttp.readyState==4)和http响应状态(status)200-300之间或者304(缓存)执行回调函数,返回数据xmlhttp.responseText
13. 数组排序,如[[1,2],[2,1],[1,3]]->[[1,2],[1,3],[2,1]]
vararr1=[[2,4],[1,2],[2,1],[1,3]];
function comparetwo(a,b){
if(a[0]!=b[0]){
return a[0]-b[0];
}else{
return a[1]-b[1];
}
}
var result=arr1.sort(comparetwo);
console.log(result);
14.HTTP与HTTPS的区别
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
15.查找数组中某元素的位置
function indexOf(arr,item){
for( vari=0;i<arr.length;i++){
if(arr[i]==item){returni;}
}
return -1;
}
var arr1=[1,2,3,4];
var result=indexOf(arr1,2);
console.log(result);
16.数组求和
function sum(arr) {
var sum=0;
arr.forEach(function(value){
sum+=value;
});
return sum;
}
var arr=[1,2,3,4];
console.log(sum(arr));
17.移除数组中的item 元素,不直接修改原先数组
function remove(arr,item){
var arr2=[];
arr.forEach(function(val){
if(val!=item){arr2.push(val);}
});
return arr2;
}
18.splice向/从数组中添加/删除项目,然后返回被删除的项目。
function remove2(arr,item){
var newarr = arr.slice(0);
for(vari=0;i<newarr.length;i++){
if(newarr[i] == item){
newarr.splice(i,1);
i--;//删除一个元素后,后面的元素会提前一位
}
}
return newarr;
}
19.改变原始数组
function remove3(arr,item){
for(vari=0;i<arr.length;i++){
if(arr[i] == item){
arr.splice(i,1);
i--;//删除一个元素后,后面的元素会提前一位
}
}
return arr;
}
var arr=[1,2,3,3,5,4,4,9];
console.log(remove2(arr,4));
20.添加元素 不直接修改原先数组
function append(arr, item) {
// return arr.push(item);
return arr.concat([item]);
}
var arr=[1,2,3,5];
console.log(append(arr,4));
21.删除数组的最后一个元素,不直接改变数组
function truncate(arr) {
var arr2=arr.slice(0);
arr2.pop();
return arr2;
}
function truncate2(arr) {
vararr2=arr.slice(0,arr.length-1);//返回一个新数组
return arr2;
}
var arr=[1,2,3,4,5];
console.log(truncate2(arr));//1,2,3,4
22.在数组开头添加元素,不直接改变数组
function prepend(arr, item) {
var arr2=arr.slice(0);
arr2.unshift(item);
return arr2;
}
var arr=[1,2,3,4,5,6];
console.log(prepend(arr,0));
23.向数组指定位置添加元素,不直接改变数组
function insert(arr, item,index) {
var arr2=arr.slice(0);
arr2.splice(index,0,item);
return arr2;
}
var arr=[1,2,3,4];
console.log(insert(arr,5,2));
24.统计数组中的值等于item元素 出现的次数
function count(arr, item) {
var count=0;
for(var i=0;i<arr.length;i++){
if(arr[i]==item){
count++;
}
}
return count;
}
var arr=[1, 2, 4, 4,3, 4, 3];
console.log(count(arr,4));
本文标签: js 面试题之
版权声明:本文标题:js 面试题之 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1687587135a118645.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论