# 基础

# 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"
Last Updated: 5/14/2022, 11:38:45 AM