如果数组中的第一个值高于或低于其他值,建议的比较方法是什么。
我有一个数组,如下所示
var a = [8,3,114,34,0,2]
我想通过js比较值a [0]是否高于或低于其他数组值。 编辑:预期变量结果:8较小,因为数组中的值高于8。
Ex 2:var b = [34,2,23,8] 预期输出:更高,因为所有其他数字都低于[0]
答案 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)