1

たとえば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]までチェックするような簡単な方法はありますか?

4

6 に答える 6

1

あなたが使用することができます.some()

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

すべてのブラウザでサポートされているわけではありませんが、簡単にシムできます。また、ライブラリには、アンダースコアなどのこのようなヘルパー関数がありますany

于 2012-10-18T11:08:11.407 に答える
0

forループを使用します。

for (var i = 0; i < myArray.length; i++) {
    if (x > myArray[i]) {
         // whatever
    }
}
于 2012-10-18T11:01:22.237 に答える
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" );
于 2012-10-18T11:03:07.417 に答える
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
        }
    }
}
于 2012-10-18T11:08:14.243 に答える
0

Object.prototypeJavaScriptオブジェクトの基本機能を拡張するために使用するのが好きです。JSフレームワークのプロトタイプMooToolsと同じように。

したがって、JS -Objectに新しい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]"
于 2012-10-18T11:47:18.067 に答える
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ループの助けを借りて、それらをループすることもできます。

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

良い一日!

于 2015-02-17T09:42:48.593 に答える