2016-04-04 16 views
0


これはたくさんありますが、私はここで検索して、私が探しているものに正確な解決策がないことを知りました。
ので、私は次の値が含まれているオブジェクトの配列があります。私が欲しいもの
配列に特定のオブジェクトが含まれているかどうかを確認してください

device_names = [ 
{ 
    address: 'XX:XX:XX:XX:XX:XX', 
    name: 'device name' 
}, 
    { 
    address: 'XX:XX:XX:XX:XX:XX', 
    name: 'device name' 
}] 

すると、この配列は、特定のアドレスを持つデバイスが含まれているかどうかを確認することであり、それがある場合はtrueを返します。 $.inArrayを提案しないでください。なぜなら、オブジェクトの配列とともに使用すると常に-1を返すからです。

+0

私はロダッシュまたはアンダースコアを使用することをおすすめします。このようなものには大きな機能があります。もちろん、私は普通のjavascriptでもできますが、jqueryは必要ありません。私はlodashsのような何かのための '_.find'が好きです。プレーンjsの - このスレッドをチェックアウトhttp://stackoverflow.com/questions/8217419/how-to-determine-if-javascript-array-contains-object – ajmajmajma

+1

その簡単な配列を最初の特定のオブジェクトの発生。多分あなたは誰かがあなたのためにそれを書くことを望んでいるでしょうか? –

+1

[JavaScriptオブジェクトの配列内のIDでオブジェクトを検索]の可能な複製(http://stackoverflow.com/questions/7364150/find-object-by-id-in-an-array-of-javascript-objects) – Shanimal

答えて

0

配列をループし、アドレスが一致するかどうかを確認し、一致する場合はtrueを返します。あなたがunderscore.jsを使用するように用意されている場合は

function checkAddress(address) { 
    for (var i = 0; i<device_names.length; i++) { 
     if (device_names[i].address == address) { 
      return true 
     } 
    } 
} 
-1

function deepFind(array, needle) { 
    return _.findIndex(array, function(value) { 
     return _.isEqual(value, needle); 
    }); 
} 

使用法:

deepFind(device_names, { 
      address: 'XX:XX:XX:XX:XX:XX', 
      name: 'device name' 
}); 

それは与えられたデバイスが発見される最初のインデックスを返します。存在しない場合は、-1を返します。

if(deepFind(...) > -1) 
    console.log("The device is found."); 
+0

代替メジャーライブラリを提案することは通常役に立つとは考えられません。 – isherwood

+0

サンプルコードをコピーする場合は、サンプルコードを答えに合わせてください。 – ajmajmajma

+0

サンプルコードではどういう意味ですか?私が提案した関数は、必要なものを正確に行います。指定された針に等しいオブジェクトを配列内で検索します。 – Toonijn

0

代わりに$ .grepを使用できますか?

このような何か... $ .grep(device_names、機能(D){戻りd.address == "XX:XX:XX:XX:XX:XX";})

0

次のことができますアドレスの別の配列へのマッピングを作成し、indexOfを使用してアドレスが配列内にあるかどうかを確認します。

var device_names = [ 
{ 
address: '11:XX:XX:XX:XX:XX', 
name: 'device name' 
}, 
{ 
address: '22:XX:XX:XX:XX:XX', 
name: 'device name' 
}] 

var device_addresses = device_names.map(function(obj){  
    return obj.address; 
}); 


device_addresses.indexOf("22:XX:XX:XX:XX:XX"); // returns 1 
関連する問題