有人可以在这里帮助解释JavaScript代码中使用的逻辑吗?
下面的代码检查两个字符串是否是彼此的字谜,但我不理解用于检查字符串的方法。
感谢。
<script type="text/javascript">
$(document).ready(function() {
var anagram = function(str1, str2){
if (str1.length !== str2.length) {
return false;
}
var sortstr1 = str1.split('').sort().join('');
var sortstr2 = str2.split('').sort().join('');
return (sortstr1 === sortstr2);
}
$('.AnagramChecker').on('click', function(e) {
e.preventDefault();
if($('#string1').val() == '') {
$('#string1').addClass('error');
if($('#string2').val() == '') {
$('#string2').addClass('error');
}
$('.results').empty();
$('.results').hide();
} else {
$('#string1').removeClass('error');
if($('#string2').val() == '') {
$('#string2').addClass('error');
$('.results').empty();
$('.results').hide();
} else {
$('#string2').removeClass('error');
var isAnagram = anagram($('#string1').val(), $('#string2').val());
$('#string1').val('');
$('#string2').val('')
$('.results').show();
$('.results').empty().append('Anagram is: ' + isAnagram);
}
}
});
});
</script>
答案 0 :(得分:3)
两个字符串都被拆分为各个字符的数组,然后按字母顺序排序并再次连接成字符串。然后比较字符串,如果它们是相同的,则是彼此的字谜。
答案 1 :(得分:0)
{0: [1], 1: [0], 2: [2], 3: [1, 2], 4: [3], 5: [2]}
答案 2 :(得分:0)
function compare(a1,a2){
if(a1.length != a2.length){
return false
}
var f1 = {}, f2 ={};
for(var a of a1){
f1[a] = ++f1[a] || 1
}
for(var a of a2){
f2[a] = ++f2[a] || 1
}
for(var key in f1){
if(!(key in f2)){
return false
}
if(f1[key] != f2[key]) {
return false
}
}
return true
}