2013-10-17 40 views
0

我有一个简单的javascript问题我真的可以使用一些帮助! 我想弄清楚如何比较数组之间的元素,并在下一个循环中再次比较大的元素。 说我们有阵列A和阵列Bjavascript:比较两个阵列互相挑战

if(A[i] < B[i]) 
//do stuff 

else if(B[i] < A[i]) 
//do stuff 

我的问题是,经过比较,我在他们的指数的元素,我想更大的元素添加到下一个循环周期进行比较。

所以,如果A = [5,7,4'-] 和B = [2,8,5]

在第一回路5进行比较,如图2所示,图2是更小的,以便与东西它发生。在下一个循环周期中,我想将5与8进行比较,并且对于现在发生的情况与5进行比较。接下来的8与7进行比较,东西与7进行比较。接下来的8与4进行比较,东西与4进行比较。对于如何实现这一点没有任何线索,您的意见非常感谢。

+0

您是在寻找[合并算法](http://en.wikipedia.org/wiki/Merge_algorithm)? – Bergi

回答

1

定义两个迭代变量:aIdx,bIdx

迭代都基于施加的条件阵列。至少有一个数组在本次迭代中被完全遍历。

现在迭代剩余的(A或B)数组。

var aIdx = 0; 
var bIdx = 0; 
// Iterate both array based on condition 
while((aIdx < A.length) && (bIdx < B.length)) { 
    if(A[aIdx] < B[bIdx]) { 
     ++aIdx; 
     // do stuff 
    } else { 
     ++bIdx; 
     // do stuff 
    } 
} 

// At this point, at least one array is completely traversed, now iterate the remaining array 
while(aIdx < A.length) { 
    ++aIdx; 
    // do stuff 
} 
while (bIdx < B.length) { 
    ++bIdx; 
    // do stuff 
} 
+0

你先生可能会做点什么!我会检查这个! – bala