比较数组中的第一个值与其他值

时间:2016-11-06 04:28:12

标签: javascript

如果数组中的第一个值高于或低于其他值,建议的比较方法是什么。

我有一个数组,如下所示

var a = [8,3,114,34,0,2]

我想通过js比较值a [0]是否高于或低于其他数组值。 编辑:预期变量结果:8较小,因为数组中的值高于8。

Ex 2:var b = [34,2,23,8] 预期输出:更高,因为所有其他数字都低于[0]

6 个答案:

答案 0 :(得分:2)

如果您想知道它是否高于所有其他值或低于所有其他值,您可以调用min和max函数,如下所示

var min = Math.min.apply(null, a);
   var max = Math.max.apply(null, a);

答案 1 :(得分:1)

最好的方法是从1开始的forloop。

for(i = 1; i < a.length;i++){
    if(a[0] > a[i])
    {
       //do something
    }
    else if(a[0] < a[i])
    {
       //do something
    }
}

答案 2 :(得分:1)

测试严格的平等......

var a = [8,3, 114,34,0,2];

a.forEach(function(element) {   
   element === a[0] ? console.log (element + ' is equal to ' + a[0]) :
   element > a[0] ? console.log(element + ' is higher than ' + a[0]) :
   console.log(element + " is lower than " + a[0]); 
});

//"8 is equal to 8"
//"3 is lower than 8"
//"114 is higher than 8"
//"34 is higher than 8"
//"0 is lower than 8"
//"2 is lower than 8"

答案 3 :(得分:0)

// Create an array of -1/0/+1 for each value relative to first elt.
const comps = ([head, ...tail]) => tail.map(e => e < head ? -1 : e === head ? 0 : +1);

// Define some little convenience routines.
const greater = c => c === +1;
const less    = c => c === -1;

// See if some or all element(s) are greater or less.
const someGreater = a => comps(a).some(greater);
const someLess    = a => comps(a).some(less);
const allGreater  = a => comps(a).every(greater);
const allLess     = a => comps(a).every(less);

// Test.
const input = [8,3, 114,34,0,2];

console.log("Some are greater", someGreater(input));
console.log("Some are less", someLess(input));
console.log("All are greater", allGreater(input));
console.log("All are less", allLess(input));

答案 4 :(得分:0)

一个有趣的伎俩:

if
function first_is_bigger (array) {
  var comp = array.join(" && " + array[0] + " > ");
  return Function("return 1 | " + comp + ";")();
}

说明:

first_is_bigger([0, 1, 2]) // false
first_is_bigger([0, -1, -2]) // true
array = [1, 2, 3];

问题:comp = array.join(" && " + array[0] + " > "); // comp = "1 && 1 > 2 && 1 > 3" exec_comp = Function("return " + comp + ";"); // exec_comp = function () { return 1 && 1 > 2 && 1 > 3; } exec_comp() // false 始终是0 && anything

false
array = [0, -1, -2]

修正:comp = array.join(" && " + array[0] + " > "); // comp = "0 && 0 > -1 && 0 > -2" exec_comp = Function("return " + comp + ";"); // exec_comp = function () { return 0 && 0 > -1 && 0 > -2; } exec_comp() // false :-( 始终与1 | anything不同:

0
  

警告:不正确地使用动态评估会打开您的注入攻击代码: - (

答案 5 :(得分:0)

根据我对这个问题的理解,我们打算检查给定元素是否是数组的最大值(在我们的特定情况下是第一个)。我已经实现了更通用的function,您可以在其中检查任何元素,但index 0是默认值。

function isHigher(input, index) {
    if (index === undefined) {
        index = 0;
    }
    for (var i in input) {
        if ((i !== index) && (input[i] > input[index])) {
            return false;
        }
    }
    return true;
}

调用isHigher(a)检查第0个元素是否最大。如果要检查第五个元素,请调用isHigher(a, 5)