2012-04-20 13 views
4

私は、次のエリアがあります。jQuery配列が配列内のオブジェクトを見つけられませんか?

myarrayのようにコンソール出力:

[>Object, >Object, >Object, >Object] 

は、最後の項目が開か:

Object 
helper: true 
id: 0 
__proto__: Object 

私が見つけた後、私の配列からこの項目を削除したいと思いますが常に-1でここにこだわっている。アイデア?

jQuery.inArray([{'helper':true}], myArray) 

おかげ

+5

'({key:" value "} == {key:" value "})'は 'false'に評価されます。 – Griffin

+0

+1 @Griffin:JavaScriptにはオブジェクト参照の概念があることを覚えておくことが重要です。人々はそれがガベージコレクションの仕組みを忘れることができます! –

答えて

1

代わりjQuery.inArrayの使用jQuery.each不要なオブジェクトを検索し、配列からそれを削除するには:

var arr = [ 
{ helper: false }, 
{ helper: true }, 
{ helper: false } 
]; 

var found = -1; 
jQuery.each(arr, function(index, obj) { 
if (obj.helper) { 
    found = index; 
    return false; 
} 
}); 

if (found > -1) { 
arr.splice(found, 1); 
} 
1

あなたはjQuery.grepArrayの要素をフィルタリングすることができます

myArray = $.grep(myArray, function (item) { 
    return !item.helper; 
}); 

inArrayについては、第1引数で新しいArrayObjectが定義されています。ここではnewなので、myArrayの範囲内になることはできません。

関連する問題