我正在尝试在javascript中进行anagram检查.为简单起见,假设下面的函数只采用小写字符串而没有任何间距/数字/符号.为什么下面的代码不起作用?
var anagram = function(string1, string2) { var string1array = string1.split('').sort(); var string2array = string2.split('').sort(); if (string1array == string2array) { console.log("they're anagrams"); } else { console.log("they are not anagrams"); } }
Andrew Templ.. 5
这==
不适合Array
,因为Array
是Object
.该==
运营商检查是否Object
可相同:
var foo = {};
var bar = {};
console.log(foo == bar); // false
var foo2 = {};
var bar2 = foo2;
console.log(foo2 == bar2); // true
因此,最简单的方法是检查这是否将它们转换回String
并使用==
,因为==
它可以用于String
:
var anagram = function(string1, string2) {
var string1array = string1.split('').sort();
var string2array = string2.split('').sort();
// All I used was .join('') on both.
if (string1array.join('') == string2array.join('')) {
console.log("they're anagrams");
}
else {
console.log("they are not anagrams");
}
}
这==
不适合Array
,因为Array
是Object
.该==
运营商检查是否Object
可相同:
var foo = {};
var bar = {};
console.log(foo == bar); // false
var foo2 = {};
var bar2 = foo2;
console.log(foo2 == bar2); // true