# 基础
# String
- 判断字符串是单字符串,还是双字符串
- 方法一
for( var i = 0; i < l; i ++ ){
var c = this.charAt( i );
if ( escape( c ).length > 4 ) {
b += 2;
}else if( c != "\r" ) {
b ++ ;
}
}
- 方法二
for( var i = 0; i < l; i ++ ){
var c = this.charAt( i );
if ( /^[\u0000-\u00ff]$/.test(c) ) {
b ++ ;
}else {
b += 2;
}
}
- 方法三
String.prototype.lengthB = function(){
var s = this.replace( /[^\x00-\xff]/g, "**" );
return s.length;
}
- 方法四
// 通过编码位置判断
if((iCode >= 0 && iCode <= 255) || (iCode >= 0xff61 && iCode <= 0xff9f))
- 清除两侧空格
String.trim()
- 截取字符串 取字符串的三个函数:slice(start,[end]),substring(start,[end])和substr(start,[length])
相关属性: slice() 第一个参数代表开始位置,第二个参数代表结束位置的下一个位置,截取出来的字符串的长度为第二个参数与第一个参数之间的差;若参数值为负数,则将该值加上字符串长度后转为正值;若第一个参数等于大于第二个参数,则返回空字符串. substring() 第一个参数代表开始位置,第二个参数代表结束位置的下一个位置;若参数值为负数,则将该值转为0;两个参数中,取较小值作为开始位置,截取出来的字符串的长度为较大值与较小值之间的差. substr() 第一个参数代表开始位置,第二个参数代表截取的长度 PS:字符串都从0开始计起
# json
- 删除值
var json = { ... };
var key = "foo";
delete json[key]; // Removes json.foo from the dictionary.
# 中文排序
window.projectLists.sort(function(a, b) {
var aTitle = a.title,
bTitle = b.title
if (a.owner === window.currentUser ) {
return -1
} else if (b.owner === window.currentUser) {
return 1
} else if (aTitle.substr(0, 1).match(/[a-zA-Z]/) && bTitle.substr(0, 1).match(/[a-zA-Z]/)) {
return aTitle.substr(0, 1).charCodeAt() - bTitle.substr(0, 1).charCodeAt()
} else if (aTitle.substr(0, 1).match(/[a-zA-Z]/)) {
return -1
} else if (bTitle.substr(0, 1).match(/[a-zA-Z]/)){
return 1
} else {
return aTitle.localeCompare(bTitle)
}
})
# 获取文件名
x.replace(/\.[^/.]+$/, "")
# 对象
Object.values() 获取对象值作为数组
# Null vs undefined
null表示"没有对象",即该处不应该有值。典型用法是:
(1) 作为函数的参数,表示该函数的参数不是对象。 (2) 作为对象原型链的终点。
Object.getPrototypeOf(Object.prototype) // null
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
JavaScript的最初版本是这样区分的:null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。
# 疑问
decodeURI(decodeURIComponent('adf\\nsfad'))
"adf\nsfad" // adf\nsfad
decodeURI('adf\nsfad')
// "adf
//sfad"