2017-11-24 5 views
-3

私はJavaScriptを使用しており、要素が配列の配列に存在するかどうかを確認したいと考えています。ここでどのように使用すると、配列の配列を含むメソッドですか?

は一例です。たとえば6のチェックがarrayに存在するどのよう

var array =[[1,5,6],[2,3],[5,8,9]]; 

+2

は 'VAR存在= array.some(X => x.includes(6))とすることができる' – Satpal

+0

は、それは私の問題を解決していただきありがとうございます。 – John

答えて

2
let exists; 

array.forEach(x => { 
    if (x.includes(6)) exists = true; 
}); 
0

再利用可能な機能を使用することができます。 jsFiddle

var array =[[1,5,6],[2,3],[5,8,9]]; 

function checkAvailability(arr, val) { 
    return arr.some(function(arrVal) { 
    return arrVal.includes(val); 
    }); 
} 

checkAvailability(array, 6); // true 
checkAvailability(array, 12) // false 

上でこれを試してみてくださいArray.some()ためdocumentationをお読みください。

ヒント:

一部()第5版でECMA-262標準に添加しました。そのようなものとしては、 標準のすべての実装では存在しないかもしれません。 は、 スクリプトの先頭に次のコードを挿入し、 が本来サポートしていない実装でsome()を使用できるようにして、この問題を回避することができます。このアルゴリズムは、ObjectおよびTypeErrorの元の値が であり、fun.callが元の値の Function.prototype.call()であると仮定すると、 ECMA-262第5版で指定されたアルゴリズムとまったく同じです。

ポリフィル:

// Production steps of ECMA-262, Edition 5, 15.4.4.17 
// Reference: http://es5.github.io/#x15.4.4.17 
if (!Array.prototype.some) { 
    Array.prototype.some = function(fun/*, thisArg*/) { 
    'use strict'; 

    if (this == null) { 
     throw new TypeError('Array.prototype.some called on null or undefined'); 
    } 

    if (typeof fun !== 'function') { 
     throw new TypeError(); 
    } 

    var t = Object(this); 
    var len = t.length >>> 0; 

    var thisArg = arguments.length >= 2 ? arguments[1] : void 0; 
    for (var i = 0; i < len; i++) { 
     if (i in t && fun.call(thisArg, t[i], i, t)) { 
     return true; 
     } 
    } 

    return false; 
    }; 
} 
関連する問題