2015-03-31 22 views
1

我有四個變量需要排序,並根據結果將相關值推送到兩個數組中的一個。值是動態的,並且可以匹配,但是我需要在數組(2和2)中進行均勻分割,理想情況下a和b總是在發生並列時進入第一個數組。比較多個值並分配相關變量

var a = 0; 
var b = 23.5; 
var c = 0; 
var d = 96.2; 

var ac, bc, cc, dc; 

var array1 = []; 
var array2 = []; 
//Here is where Im trying to find the top numbers, and based on the value, push the ac, bc, cc, or dc variables to separate arrays. 
((a > b && a > c && a > d) ? (array1.push(ac)): (array2.push(ac))); 
((b > a && b > c && b > d) ? (array1.push(bc)): (array2.push(bc))); 
((c > a && c > b && c > d) ? (array1.push(cc)): (array2.push(cc))); 
((d > a && d > c && d > d) ? (array1.push(dc)): (array2.push(dc))); 

顯然這不是工作,因爲它只發現四個最高的數字。無論如何沒有寫在每個場景中都可以做到這一點?

編輯:爲了澄清,我試圖比較第一組(a,b,c,d)並基於結果,將第二組(ac,bc,cc,dc)排序爲兩個數組。此方法適用於比較兩個變量(a> b),因爲只有兩個結果(true/false)。

+0

把值在數組並使用['.sort()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) – Pointy 2015-03-31 20:46:19

+1

您能否提供預期輸出的示例?如何定義'ac','bc','cc','dc',或者這很重要? – 2015-03-31 20:46:25

+0

在數組中拋出這些值,循環遍歷數組並對它們進行比較或者您想要做什麼。並根據它將哪個索引添加到任何你想要的數組中。 – floor 2015-03-31 20:46:29

回答

3
var a = 0; 
var b = 23.5; 
var c = 0; 
var d = 96.2; 

var array1 = 
[ 
    { priority: a, value: ac }, 
    { priority: b, value: bc }, 
    { priority: c, value: cc }, 
    { priority: d, value: dc } 
]; 
array1.sort(function(v1, v2) { return v1.priority - v2.priority; }); 
var array2 = array1.splice(2, 2); // remove 2 items starting at index 2 

現在,您可以參考值array1[0].value

編輯:如果你只想要的值,你可以這樣做:

array2 = array2.map(function(v) { return v.value; }); 
+0

謝謝,但訣竅是,第一個變量(a,b,c和d)用於排序第二組變量(ac,bc,cc, DC)分成兩個不同的陣列。這對兩對(a> b)很好,但除此之外就是這個問題。 – 2015-03-31 20:57:33

+0

我看,編輯答案反映。 – radiaph 2015-03-31 21:01:58

+0

非常好...正是我想要做的。謝謝! – 2015-03-31 21:08:31