为什么这段代码不能用于anagram检查?

d1d*_*1du 3 javascript arrays sorting split anagram

我正在尝试在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");
    }
}
Run Code Online (Sandbox Code Playgroud)

And*_*ton 5

==不适合Array,因为ArrayObject.该==运营商检查是否Object可相同:

var foo = {};
var bar = {};
console.log(foo == bar); // false
var foo2 = {};
var bar2 = foo2;
console.log(foo2 == bar2); // true
Run Code Online (Sandbox Code Playgroud)

因此,最简单的方法是检查这是否将它们转换回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");
    }
}
Run Code Online (Sandbox Code Playgroud)