我需要对四个变量进行排序,并根据结果将相关值推送到两个数组中的一个。值是动态的,并且可以匹配,但我需要在数组(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),因为只有两个结果(真/假)。
答案 0 :(得分: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; });