8

javascriptにオブジェクトの配列があります。これに似たもの:

    var objectArray = [
         { "Name" : "A", "Id" : "1" },
         { "Name" : "B", "Id" : "2" },
         { "Name" : "C", "Id" : "3" },
         { "Name" : "D", "Id" : "4" }
    ];

今、私は与えられたプロパティName値を持つオブジェクトが配列に存在するかどうかを調べようとしています。たとえばinArrayindexOfなどの組み込み関数を使用します。これよりも文字列しかない場合Cは、プロパティ名Cのオブジェクトが存在するかどうかを確認できます。 indexOf、inArrayなどの組み込み関数を使用して配列内にあるかどうか?

4

4 に答える 4

9

Rahul Tripathiからのコメントにリンクされた回答のように、のインデックスを使用するのではなく、オブジェクト全体を渡すのではなく、変更されたバージョンを使用してオブジェクトを名前でプルします。

function pluckByName(inArr, name, exists)
{
    for (i = 0; i < inArr.length; i++ )
    {
        if (inArr[i].name == name)
        {
            return (exists === true) ? true : inArr[i];
        }
    }
}

使用法

// Find whether object exists in the array
var a = pluckByName(objectArray, 'A', true);

// Pluck the object from the array
var b = pluckByName(objectArray, 'B');
于 2012-11-03T08:51:13.730 に答える
8
var found = $.map(objectArray, function(val) {
    if(val.Name == 'C' ) alert('found');
});​

デモ

于 2012-11-03T08:50:04.717 に答える
1

あなたは試すことができます:

objectArray.indexOf({ "Name" : "C", "Id" : "3" });

より良いアプローチは、配列を単純に反復することですが、indexOfを使用する必要がある場合は、これを行う方法です。

反復アプローチは次のようになります。

var inArray = false;
for(var i=0;i<objectArray.length;i++){
    if(objectArray[i]["Name"] == "C"){
        inArray = true;
    }
}
于 2012-11-03T08:48:22.867 に答える
0

オブジェクトが大きすぎない場合は、反復と照合を検討して、特定のオブジェクトが次のように存在するかどうかを確認できます。

//The Object
var objectArray = [
     { "Name" : "A", "Id" : "1" },
     { "Name" : "B", "Id" : "2" },
     { "Name" : "C", "Id" : "3" },
     { "Name" : "D", "Id" : "4" }
];


//Function to check if object exist with the given properties
function checkIfObjectExist(name,id)
{
for(var i=0;i<objectArray.length;i++)
 {
  if(objectArray[i].Name===name && objectArray[i].Id===id)
   {     
      return true;
   }
 }    
}

// Test if function is working
console.log(checkIfObjectExist("B","2"));
于 2012-11-03T09:10:20.060 に答える