我正在检查三个Strings的相等性;
var str1 = "Hello World!";
var str2 = "Hello \
World!";
var str3 = "Hello" + " World!";
//console.log(str1===str2);//true
// console.log(str2===str3);//true
console.log(str1 === str2 === str3); //false
我们如何检查这个我想比较3个变量的场景?
答案 0 :(得分:1)
我的问题并不完全清楚。
使用
console.log(str1 === str2 === str3);
你正在检查
(str1 === str2) === str3
(是的,关联性是left to right这里)
也就是说,您将布尔值与字符串进行比较。
你想要的是
(str1 === str2) && (str2 === str3)
然后最好的方法是使用像
这样的函数来规范化你的字符串function normalize(str){
return str.replace(/\s+/g,' ');
}
您可以定义一个比较所有字符串的函数:
function allEquals(strs) {
var p;
for (var i=0; i<arguments.length; i++) {
if (typeof arguments[i] !== "string") return false;
var s = arguments[i].replace(/\s+/g, ' ');
if (p !== undefined && s!==p) return false;
p = s;
}
return true;
}
console.log(allEquals(str1, str2, str3));
注意:多行字符串文字很痛苦。这些字符串是不同的:
var str2 = "Hello \
World!";
var str4 = "Hello \
World!";