2016-07-19 2 views
-3

名前のフィールドを持つ配列に対してチェックを行い、 "arraryCollection"のobject.nameが "people配列"に存在するかどうかを確認したいそれは[n]が」.nameのをarraryCollectionをプッシュしますが存在しません。そのようなこと。

$.each(arrayCollection, function(i, el) {  
    if ($.inArray(el.name, people.name) === -1) { 
     people.push({name: el.name);         
    }) 
}) 

を、それは未定義だと私はpeople.name使用することはできません、以下 は私が回避するために行わものですが ですが、people.nameを直接呼び出す方法はありますか?

var tempList=[]; 
var people=[]; 
$.each(arrayCollection, function(i, el) {  
     if ($.inArray(el.name, tempList) === -1) { 
      tempList.push(el.name);         
     }) 
    }) 
$.each(tempList, function(i, tl) { 
    people.push({name: tl}) 
}) 

つまり、配列フィールドのコレクション全体をpeople.nameのように直接呼び出すにはどうすればよいでしょうか?個別のpeople [n] .nameではなく1つの結果しか返しません。このような

+0

ここで何か問題があります。 'people.name'が存在する場合、' people'はオブジェクトであり、オブジェクトではないので 'people'にプッシュできません。 'people'構造の詳細が必要です。 [mcve]を参照してください – charlietfl

+0

人々は 'people = [{name:" abc "}、{name:" efg "}]'のように見える配列ですので、people {0} .nameは 'abc'です – nicker

+0

配列をループして各オブジェクトのnameプロパティを比較します。 – charlietfl

答えて

0

チェックInArrayバリ:

inArrayは、アレイ内の要素のインデックスではなく、アイテムが配列内に存在するかどうかを示すブール値を返します。要素が見つからなかった場合は、-1が返されます。

// it will check if ABC is there in array `people.name` 
if($.inArray("ABC", people.name) !== -1) { 
    people.push({name: "testing"});         
} 
+0

) –

+1

@GeorgeGarchagudashvili私はすでに説明のため私の投稿を編集しています:) –

+0

私の問題は実際にはpeople.nameです、あなたはそれが未定義に戻ってくると思うようにpeople.nameを呼び出すことはできません人[n] .nameであること。 – nicker

0

それを返すことに-1それが一致するものを見つけられないとき$.inArray()方法では、JavaScriptのネイティブ.indexOf()方法と同様です。配列内の最初の要素は、あなたが値として配列を含むキーの「name」がjsオブジェクトを持っている場合は、あなたの中で述べたように、その後、あなたはそれを使用することができます値、$.inArray() 0を返します。

var testArr= [ 4, "ABC", 8, "John" ]; 


if($.inArray("ABC", testArr) > -1) 
{ 
    console.log('Horray'); 
} 

と一致した場合質問:

var obj= {"name":[ 4, "ABC", 8, "John" ]}; 


if($.inArray("ABC", obj.name) > -1) 
{ 
    console.log('Horray'); 
} 

push()方法は、配列ではなくオブジェクトに新しいアイテムを追加し、配列のみでそれを使用してください。

関連する問題