编程语言
首页 > 编程语言> > javascript – 为什么这段代码不能用于anagram检查?

javascript – 为什么这段代码不能用于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");
    }
}

解决方法:

==不适用于Array,因为Array是一个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");
    }
}

标签:anagram,javascript,arrays,sorting,split
来源: https://codeday.me/bug/20190727/1556412.html