2013-08-23 212 views
0

为什么这段代码不能正确地将单词推向答案数组?当我改变环路:为什么不能将数组与Javascript中的===进行比较?

for (var k in testDict) { 
     console.log(testDict[k].split("").sort()); 
    } 

它正确打印什么,我很期待,分裂的数组,从排序的话字符。所以我不确定为什么它没有评估平等和推动回答。谢谢!

function word_unscrambler(word, dict) { 
    var testDict = dict; 
    var answer = []; 
    var word_scrambled = word.split("").sort(); 
     for (var k in testDict) { 
      if (word_scrambled === testDict[k].split("").sort()) 
       answer.push(testDict[k]); 
     } 
    console.log(answer); 
} 

word_unscrambler("kevin", ["trees", "but", "ankle", "nevik", "knive", "evin"]); 

回答

3

的问题是,你正在测试平等阵列,因为你是对字符串进行操作,你可以加入两个数组进行比较:

function word_unscrambler(word, dict) { 
    var testDict = dict; 
    var answer = []; 
    var word_scrambled = word.split("").sort().join(''); 
     for (var k in testDict) { 
      if (word_scrambled === testDict[k].split("").sort().join('')) 
       answer.push(testDict[k]); 
     } 
    console.log(answer); 
} 
+1

+1。不妨记忆一下'word_scrambled.join('')' –

+0

真棒,非常感谢 –

+0

@Jacob Krall确实如此,edit'd – raser

0

你不能直接比较平等阵列,因为它只会比较它们的指针。您必须改为比较数组的内容。只要你不处理多维阵列,这应该是足够的:

function word_unscrambler(word, dict) { 
    var testDict = dict; 
    var answer = []; 
    var word_scrambled = word.split("").sort(); 
     for (var k in testDict) { 
      if (arrays_equal(word_scrambled, testDict[k].split("").sort())) 
       answer.push(testDict[k]); 
     } 
    console.log(answer); 
} 

function arrays_equal(arr1, arr2) { 
    for (var i in arr1) { 
     if (arr1[i]!==arr2[i]) 
      return false; 
    } 
    return true; 
} 

word_unscrambler("kevin", ["trees", "but", "ankle", "nevik", "knive", "evin"]); 
相关问题