2014-11-20 257 views
0

當我需要比較兩個數組時,我在遊戲中陷入困境。兩個數組都包含數字。第一個數組按照用戶順序得到數字,第二個按數字排序。我嘗試實現的是:比較這些數組,並在用戶數組中找到錯誤的位置(如果存在)並將該數字返回到錯誤的位置。比較元素在第一個陣列中的位置與另一個陣列

我有什麼tryed:

var a = ["1","2","3","4","5"]; 
var d = ["1","2","3","5","4"]; 

function checkArrays(arrA, arrB){ 

    if(arrA.length !== arrB.length) return false; 

    var cA = arrA.slice().sort().join(","); 
    var cB = arrB.slice().sort().join(","); 

    return cA===cB; 

} 

編輯:randomArrayGenerated.push(generateRandoms(0,99)); - 在generateRandoms是一個函數。雖然在我推randomArrayGenerated一些數字,所以數組的長度變化。

correctOrderArray.push(randomArrayGenerated.sort(function(x, y){return x-y})); - 在correctOrderArray中添加隨機數組中的元素,但排序。

userArray.push(userOrder); - 其中userOrder是一個從輸入獲取值的變量。

IF userArray.length == correctOrderArray.length - 我想利用correctOrderArray.find(function(a, b){ return a !== userArray[b] })

爲什麼不工作來比較這些陣列? (Uncaught TypeError:undefined不是函數)

+0

不能與你一個循環做到這一點真的很容易嗎? – Rooster 2014-11-20 21:27:15

+0

你是否需要確認他們都有數字,或者你只是想知道錯誤位置的第一個數字? – Shiala 2014-11-20 21:27:32

+0

我需要檢查用戶數組中存在錯誤的定位數字與已排序的數組相比,並返回用戶數組中錯誤位置的數字(而不是位置)。就像在上面的例子中,如果我們比較a和b,其中b是用戶數組,我只需要返回5,4或4,5就不會影響順序因爲您可以看到,如果與數組進行比較,則會切換4和5。 – Proless 2014-11-20 21:32:47

回答

1

它只是一個循環。

function checkArrays(arrA, arrB){ 
    for(var i = 0; i < arrA.length; i++) { if(arrA[i] !== arrB [i]) return arrB [i] }; 
} 

http://jsfiddle.net/hL257bh6/

如果你允許使用的ECMAScript 6

a.find(function(v, i){ return v !== d[i] }) 
+0

不要在循環中使用return – Shiala 2014-11-20 21:30:53

+0

以及之後,返回-1; – XristosK 2014-11-20 21:31:36

+0

仍在使用返回 – Shiala 2014-11-20 21:38:38

0
var a = ["1","2","3","4","5"]; 
var d = ["1","2","3","5","4"]; 
var wrongPositioned = false; 

function checkArrays(arrA, arrB){ 

    if(arrA.length !== arrB.length) return false; 

    for (var i = 0; i< arrA.length; i++) { 
     if (arrA[i] !== arrB[i]) { 
      wrongPositioned = { 
       position: i, 
       value: arrA[i], 
       userValue: arrB[i], 
       valuePositionInUser: arrA.indexOf(arrB[i]) 
      }; 
      break; 
     } 
    } 

    return wrongPositioned; 

} 
相關問題