2017-12-05 4 views
0

私はそのキーによって連想配列の値を見つける必要があります。このようなことは可能でしょうか?オブジェクトを操作し、キーを検索しようとしたときに.hasOwnProperty()の使用に関する配列のキーとしての関数の引数

$.fn.array_search = function(what, where, array_key){ 

    for (var key in where) { 
     if (where[key].array_key == what) return true; 
    } 
    return false; 
} 
+0

あなたは連想配列を使用すると、 'VAR人= {firstNameの "ジョン"、lastNameの: "ドウ"、年齢:46}のようないくつかのことを意味すると言うとき、' –

+0

@MuhammadOmerAslam、などを'var names = {{firstName:" John "、lastName:" Doe "、年齢:46}、{firstName:" Tom "、lastName:" Dav "、age:25}たとえば、 – NisuSan

+0

があなたに答えを追加しました –

答えて

1

方法、hasOwnProperty()方法はobjectは、指定されたpropertyとして自身(not inherited)性質を持っているかどうかを示すbooleanを返します。このメソッドは、in演算子とは異なり、objectが指定されたプロパティをそのオブジェクトの直接プロパティとして持つかどうかを判断するために使用できますが、このメソッドはオブジェクトのプロトタイプチェーンをチェックしません。

Array.prototypeを使用して、ご使用のアレイにprototypeを定義することができます。 Array.prototypeプロパティは、Arrayコンストラクタのprototypeを表し、すべてのArrayオブジェクトに新しいプロパティとメソッドを追加できます。

私はあなたの機能を次のように更新しました。役立つことを願っています。

var arrayC = [{ 
 
    name: "omer", 
 
    age: 16, 
 
    city: "pakistan" 
 
    }, 
 
    { 
 
    name: "ali", 
 
    age: 26, 
 
    city: "pakistan" 
 
    } 
 
]; 
 

 

 
// If JavaScript doesn't provide a assoc_search() method natively, 
 
if (!Array.prototype.assoc_search) { 
 

 
    // returns after finding the first match for the given key => value pair and return the value 
 
    Array.prototype.assoc_search = function(what, array_key) { 
 

 
    let where = this; 
 

 
    for (var key in where) { 
 
     if (where[key].hasOwnProperty(array_key) && where[key][array_key] == what) { 
 
     return where[key][array_key]; 
 
     } 
 
    } 
 
    return false; 
 

 
    }; 
 
} 
 

 
var result = arrayC.assoc_search("omer", "name"); 
 
(result) ? console.log('found ' + result): console.log('not found ');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

関連する問題