前端试题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