如何在Javascript中将数值变量与数组中的每个数字元素进行比较?

时间:2012-10-18 10:58:58

标签: javascript arrays compare

如果我有一个充满10个数字的Javascript数组。 例如(10,11,12,13,14,15,16,17,18,19) 我想要一个值为20的变量,并检查是否有 数组中的元素大于20.因为我将比较许多填充数字的数组,并且不知道它们包含的数字。

如何获取20然后获取Javascript来测试数组中的每个数字,以确定它是否大于20。

我知道你可以这样说:

var x = 20;
if (  x > myArray[0] && 
  x > myArray[1]     

等。等等,但这可能意味着输入一长串的元素检查。是否有一种简单的方法,比如从开始索引[0]到[10]或其他什么来检查?

6 个答案:

答案 0 :(得分:1)

您可以使用.some()

if (myArray.some(function(x) {return x > 20;}))
    // do something

并非所有浏览器都支持它,但您可以轻松地对其进行填充。此外,库具有这样的辅助函数,例如下划线的any

答案 1 :(得分:0)

使用for循环。

for (var i = 0; i < myArray.length; i++) {
    if (x > myArray[i]) {
         // whatever
    }
}

答案 2 :(得分:0)

var x = 20;
var myArray = [10,11,12,13,14,15,16,17,18,19];
var cnt=0;

for(var i = 0; i < myArray.length; i++) {
 if(myArray[i]>x) {
   cnt++;
 }
}

alert("Found "+cnt+" values greater than "+x+" in the array" );

答案 3 :(得分:0)

试试这个:

function getValuesFrom(array,x)
{
    x = +(x);//coerce to number
    array.sort(function(a,b)
    {
        return (a > b ? 1 : -1);
    });//sort in ascending order
    for (var i = 0;i<array.length;i++)
    {
        if (+array[i] >= x)
        {
            return array.slice(i);//return all elements >= x
        }
    }
}
var myArray = [10,11,12,13,14,15,16,17,18,19];
var larger = getValuesFrom(myArray,15);
console.log(larger);//[15,16,17,18,19]
console.log(larger.length);//5

应该这样做。注意:将数组传递给此函数后,您可能会发现其顺序已更改,以避免这种情况:

function getValuesFrom(array,x)
{
    x = +(x);//coerce to number
    var tmpArray = array.slice(0);//copy array
    tmpArray.sort(function(a,b)
    {
        return (a > b ? 1 : -1);
    });//sort in ascending order
    for (var i = 0;i<tmpArray.length;i++)
    {
        if (+tmpArray[i] >= x)
        {
            return tmpArray.slice(i);//return all elements >= x
        }
    }
}

答案 4 :(得分:0)

我喜欢使用Object.prototype来扩展JavaScript对象的基本功能。就像JS框架prototypeMooTools一样。

因此,向JS filter - 对象引入一个新的Array函数不仅可以解决您的特定问题,还可以解决一大类问题。

// extending the Array type with the new function 'filter'
// so all arrays have access to this function
// argument `fn` is a test-function which returns true or false
Array.prototype.filter = function(fn) {
    var filtered = []; // a new array for the filtered items
    for(var i = 0, len = this.length; i < len; i++) {
        var item = this[i];
        // store this item if fn returns true
        if( fn(item) ) filtered.push(item); 
    }
    return filtered;
}

// want to filter this array   
var myArr = [1,2,3,4,5,6];

// find items in myArr > 3
var myArrGt3 = myArr.filter(
    // this is the test function / must always return a bool
    function(item) {
        return item > 3;
    }
);

// testing output
document.write(JSON.stringify(myArrGt3)); // prints "[4,5,6]"

答案 5 :(得分:0)

您可以使用jQuery的inArray方法。

说明:在数组中搜索指定的值并返回其索引(如果未找到,则返回-1)。

$.inArray( 5 + 5, [ 4, 5 , 7, 10 ] );  // output is 3

示例:

<script>
var arr = [ 4, "Pete", 8, "John" ];

jQuery.inArray( "John", arr ) // this returns 3(Index value of John)


</script>

for loop 的帮助下,您也可以循环播放它们。

var array1=["fox","tiger","lion"];
var array2=["rat","cow","lion"];
for(i=0; i<array2.length; i++)
{
document.write(jQuery.inArray( array2[i], array1 ));
}

Output: -1 
        -1 
         2

美好的一天!