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