编程题:综合等
文章目录
1.综合
1.1 dom节点查找
- 查找两个节点的最近的一个共同父节点,可以包括节点自身
function commonParentNode(oNode1, oNode2) {
for(;;oNode1=oNode1.parentNode){
if(oNode1.contains(oNode2)){
return oNode1;
}
}
}
1.2 根据包名,在指定空间中创建对象
function namespace(oNamespace, sPackage) {
var pack = sPackage.split('.');
for(var i=0;i<pack.length;i++){
if(!oNamespace[pack[i]]){
oNamespace[pack[i]] ={};
}
oNamespace = oNamespace[pack[i]];
}
}
1.3 斐波那契数列函数
function fibonacci(n) {
return n>2? fibonacci(n-1)+fibonacci(n-2):1;
}
1.4 获取字符串长度
- 如果第二个参数 bUnicode255For1 === true,则所有字符长度为 1
否则如果字符 Unicode 编码 > 255 则长度为 2(在原来长度上再加1)
function strLength(s, bUnicode255For1) {
if(bUnicode255For1 === true){
return s.length;
}
for(var i=0,m=0,len=s.length; i<len; i++){
if(s.charCodeAt(i)>255)
m++;
}
return s.length+m;
}
1.5 判断邮箱格式
function isAvailableEmail(sEmail) {
var reg=/^([\w+\.])+@\w+([.]\w+)+$/;
return reg.test(sEmail);
}
1.6 颜色字符串转换
- 将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff
- rgb 中每个 , 后面的空格数量不固定
- 十六进制表达式使用六位小写字母
- 如果输入不符合 rgb 格式,返回原始输入
function rgb2hex(sRGB) {
return sRGB.replace(/^rgb\((\d+)\s*\,\s*(\d+)\s*\,\s*(\d+)\)$/g, function(a, r, g, b){
return '#' + hex(r) + hex(g) + hex(b);
});
}
function hex(n){
return n < 16 ? '0' + (+n).toString(16) : (+n).toString(16);
}
- /g 表示该表达式可以进行全局匹配。
- 不加入/g,则只返回第一个匹配,无论执行多少次均是如此,如果加入g,则第一次执行也返回第一个匹配,再执行返回第二个匹配,依次类推。
1.7 字符串字符统计
function count(str) {
var obj = {};
str.replace(/\S/g,function(s){
!obj[s]?obj[s]=1:obj[s]++;
})
return obj;
}
1.8 获取url参数
- 使用void目的就是为了得到javascript中的undefined,为什么不直接使用undefined呢?主要有2个原因:
1.使用void 0比使用undefined能够减少3个字节;2.undefined并不是javascript中的保留字,我们可以使用undefined作为变量名字,然后给它赋值.
2.小结
1./g表示全局匹配;
2. .replace()方法第1个参数为匹配的字符格式,第2个参数为将要替换的元素,一般设置匿名函数。