Skip to content

Instantly share code, notes, and snippets.

@xgqfrms-GitHub
Last active May 15, 2017 05:05
Show Gist options
  • Save xgqfrms-GitHub/654c4f55bf773034a5641b5f9a47aa06 to your computer and use it in GitHub Desktop.
Save xgqfrms-GitHub/654c4f55bf773034a5641b5f9a47aa06 to your computer and use it in GitHub Desktop.
compare-strings-in-javascript

https://stackoverflow.com/questions/2167602/optimum-way-to-compare-strings-in-javascript

https://stackoverflow.com/questions/1179366/is-there-a-javascript-strcmp

 ( str1 < str2 ) ? -1 : ( str1 > str2 ? 1 : 0 );
 

String.prototype.localeCompare()

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare

localeCompare() 方法返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Atomics/compareExchange

Atomics.compareExchange() 静态方法会在数组的值与期望值相等的时候,将给定的替换值替换掉数组上的值,然后返回旧值。 此原子操作保证在写上修改的值之前不会发生其他写操作。

https://www.tutorialspoint.com/javascript/string_localecompare.htm

"string1".localeCompare("string2" )

    "string".localeCompare("");
    // 1
    "string".localeCompare("string");
    // 0
    "string".localeCompare("0");
    // 1
    "string".localeCompare("xyz");
    // -1
    "string".localeCompare("1");
    // 1

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness

	
str.equals(str)

http://processingjs.org/reference/String_equals_/

@xgqfrms-GitHub
Copy link
Author

JavaScript 中的相等性判断

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

ES2015中有四种相等算法:

抽象相等比较 (==)
严格相等比较 (===): 用于 Array.prototype.indexOf, Array.prototype.lastIndexOf, 和 case-matching
同值零: 用于 %TypedArray% 和 ArrayBuffer 构造函数、以及Map和Set操作, 并将用于 ES2016/ES7 中的String.prototype.includes
同值: 用于所有其他地方

JavaScript提供三种不同的值比较操作:

严格相等 ("triple equals" 或 "identity"),使用 === ,
宽松相等 ("double equals") ,使用 ==
以及 Object.is (ECMAScript 2015/ ES6 新特性)

选择使用哪个操作取决于您正在寻找什么样的比较。

简而言之,在比较两件事情时,double equals将执行类型转换;
三等于将进行相同的比较,而不进行类型转换 (如果类型不同, 只是总会返回 false );
而Object.is的行为方式与三等式相同,但是对于NaN和-0和+0进行特殊处理,所以最后两个不相同,而Object.is(NaN,NaN)将为 true。
(通常将NaN与NaN进行比较-即, 使用双等号或三等于-评估为false,因为IEEE 754这样说.)
请注意,所有这些之间的区别都与其处理原语有关; 没有一个比较参数在概念上, 是否在结构上是相似的。

@xgqfrms-GitHub
Copy link
Author

xgqfrms-GitHub commented May 15, 2017

String Trim

String.prototype.trim()

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Trim

trim() 方法会从一个字符串的两端删除空白字符。
在这个上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等) 以及所有行终止符字符(如 LF,CR)。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/TrimRight

trimRight() 方法从一个字符串的右端移除空白字符。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/TrimLeft

trimLeft() 方法从一个字符串的左端移除空白字符。

兼容旧环境

如果 trim() 不存在,可以在所有代码前执行下面代码

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment