假设我有一个类似的列表
狗 dOg 神 doggy dogg 斑马木
我想要做的是找到列表中的所有单词,不管大小写,或者不管实际单词。我想匹配字母并数一数。所以从上面
Dog, dOg, God 都是匹配的,在这种情况下会返回“3”作为计数,但是 doggy、dogg、zebra、wood.. 都是唯一的,并且都会返回 1 作为计数。虽然我知道这是可能的,我不知道从哪里开始。字谜概念让我有点失望。有任何想法吗?
假设我有一个类似的列表
狗 dOg 神 doggy dogg 斑马木
我想要做的是找到列表中的所有单词,不管大小写,或者不管实际单词。我想匹配字母并数一数。所以从上面
Dog, dOg, God 都是匹配的,在这种情况下会返回“3”作为计数,但是 doggy、dogg、zebra、wood.. 都是唯一的,并且都会返回 1 作为计数。虽然我知道这是可能的,我不知道从哪里开始。字谜概念让我有点失望。有任何想法吗?
var words = new Array("Dog", "dOg", "God", "doggy", "dogg","Zebra", "Wood");
var unique = {};
// iterate over all the words
for (i=0; i < words.length; i++) {
// get the word, all lowercase
var word = words[i].toLowerCase();
// sort the word's letters
word = word.split('').sort().join('')
// keep a count of unique combinations
if(unique[word])
unique[word] += 1;
else
unique[word] = 1;
}
// print the histogram
for (u in unique)
document.write(u + ": " + unique[u] + "<br/>")
这就是我想出的......这里的jsfiddle
$(document).ready(function() {
var mywords = ['Dog', 'dOg', 'God', 'doggy', 'dogg', 'Zebra', 'Wood'];
var finalArr = {};
for (var i = 0; i < mywords.length; i++) {
var temp = mywords[i].toLowerCase();
var letters = temp.split('');
var sorted = letters.sort();
var final = sorted.join("");
if(typeof finalArr[final] != 'undefined'){
finalArr[final] ++;
} else {
finalArr[final] = 1;
}
}
console.log(finalArr);
for(var i in finalArr) {
alert(i + ': ' + finalArr[i]);
document.write(i + ': ' + finalArr[i] + "<br/>");
}
});