前端试题2

1、判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母,数字,下划线,总长度为5-20;

1 var reg=/^[a-zA-Z][A-Za-z_0-9]{4,19}$/;
2 reg.test("dasdasd12edwadwa");

[]挺好用枚举所有的符号类进去

2、截取字符串abcdefg的efg

1 var str="abcdefg";
2 if(/efg/.test(str)){
3    var efg=str.substr(str.indexOf("efg"),3);
4     alert(efg);
5 }
stringObject.indexOf(searchvalue,fromindex)该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。

stringObject.substr(start,length):一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。
3、判断一个字符串中出现字数最多的字符,并且统计这个次数;

 1  var str="abacd";
 2    function fun(str){
 3     var obj={};
 4     for(var i=0;i<str.length;i++){
 5       var key=str[i];
 6       if(!obj[key])
 7         obj[key]=1;
 8       else
 9         obj[key]++;
10     }
11 
12     var max=-1;
13     var max_value="";
14     var key;
15     for(key in obj){
16       if(obj[key]>max){
17         max=obj[key];
18         max_value=key;
19       }
20     }
21 
22     alert("max_value:"+max_value+";max_times="+max);
23    }
24 
25    fun(str);

4、编写一个方法,求一个字符串的字节长度

字符串的字节长度 主要考虑中文字符是双字节

       

 1 function getBytes(str){
 2     var len=str.length;
 3     var bytes=len;
 4     for(var i=0;i<len;i++){
 5       if(str[i].match(/[^x00-xff]/))
 6         bytes++;
 7     }
 8     return bytes;
 9    }
10 
11    var str="ilove黄";
12    alert(getBytes(str));

注意 javascript中的length不包括“/0”这个玩意额;就是这个字符串的实际长度;

所以“ilove黄”的length为6 的字节数为7;

判断双字节(包括中文)的正则表达式是[^x00-xff]

5、编写一个方法,去掉一个数组的重复元素

 1 function unique(arr){
 2 
 3     var obj={};
 4     var array=[];
 5     for(var i=0;i<arr.length;i++){
 6       var key=arr[i];
 7       if(obj[key]!=1){
 8         obj[key]=1;
 9         array.push(key);
10       }
11     }
12     return array;
13 
14    }
15 
16    var arr=[1,1,2,3,3,2,1];
17    alert(unique(arr));

类似于hash table ;

关于Array

Array 对象属性

属性描述
constructor 返回对创建此对象的数组函数的引用。
length 设置或返回数组中元素的数目。
prototype 使您有能力向对象添加属性和方法。

Array 对象方法

方法描述
concat() 连接两个或更多的数组,并返回结果。
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
pop() 删除并返回数组的最后一个元素
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reverse() 颠倒数组中元素的顺序。
shift() 删除并返回数组的第一个元素
slice() 从某个已有的数组返回选定的元素
sort() 对数组的元素进行排序
splice() 删除元素,并向数组添加新元素。
toSource() 返回该对象的源代码。
toString() 把数组转换为字符串,并返回结果。
toLocaleString() 把数组转换为本地数组,并返回结果。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
valueOf() 返回数组对象的原始值

6、数组中的数组去重

例如  var arr=[1,2,3,[1,2,3],1,23,4]

 1 var arr = [1,2,3,[1,1,2],[3,2],2];
 2 
 3 var result = arr.reduce(function(v, i) {
 4     if (Array.isArray(i)) {
 5         i.forEach(function(item) {
 6             if (v.indexOf(item) < 0) {
 7                 v.push(item);
 8             }
 9         });
10     } else {   
11         if (v.indexOf(i) < 0) {
12             v.push(i);
13         }
14     }
15     return v;
16 }, []);
17 
18 console.log(result);

7、如何隐藏和显示一个元素

1 el.style.display="";//显示
2 el.style.display="none";//不显示

8、js中如何判断一个变量是否为一个String类型?

js 中构造string 有两种形式 1 var str="sdad";2 var str=new String("d12");

function isString(str){
return (typeof str=="string"||str.constructor==String);
}

var str1=122;
var str2="123";
var str3=new String("12313");

alert(isString(str1));
alert(isString(str2));
alert(isString(str3));

9、js中有哪些基本数据类型

Number,String,Null,Undefined,Boolean

typeof 出的类型有number,string,undefined,boolean,function,object

原文地址:https://www.cnblogs.com/huhaibo/p/3629809.html