2017-01-16 4 views
-3

に応じてsubarrayのいずれかに参加者を追加したいとします。 subarrayを反復処理し、groupIdをjavascriptで比較するにはどうすればいいですか? 私はangle jsを使用していますが、console.log($ scope.groupDetails4GroupAdded)はこのオブジェクトをchome inspectで返します。あなたはgroupIdでフィルタリングする場合ネストされた配列を反復してサブアレイに要素を追加する方法

0: Object 
$$hashKey: "object:30" 
domain: "IND" 
groupID: 109 
groupName: "Disha" 
owner: "JACK" 
participants: Array[3] 
__proto__: Object 
1: Object 
$$hashKey: "object:31" 
domain: "IND" 
groupID: 120 
groupName: "home" 
owner: "tOM" 
participants: Array[3] 

答えて

0

あなたはfilter使用する必要があります。

const matchedItems = array.filter(item => item.groupId === 109); 

がこの条件を満たすすべての参加者を取得するには、あなたがその結果に減らす呼び出すことができます。

const participants = array 
    .filter(item => item.groupId === 109) 
    .reduce((result, item) => [...result, ...item.participants], []); 

1つの一致が必要な場合:

const matchedItem = array.find(item => item.groupId === 109); 

配列の相対的な方法については、MDN array documentationを参照してください。

+0

@MattieuLemoine VAR desiredObject = $ scope.groupDetails4GroupAdded.filter(関数(エル){ \t \t \t \t \t \t \t return el.groupID === $ scope.groupId \t \t \t \t \t \t \t}); \t \t \t変数desiredObjectで、一致するgroupIDを持つmyオブジェクトが来ています。しかし、desiredObject.participantsは未定義です。 \t \t \t desiredObject.participants.push(friendDetails); //プッシュオンとしてエラーを表示します。未定義 –

+0

desiredObjectはオブジェクトではありません。「item.groupId === 109''を満たすアイテムの配列です。 '' filter''は配列を返します。 – MatthieuLemoine

+0

私は参加者に到達するために、desiredDobjectにループを適用する必要がありますか? –

0

あなたが詳細な情報を提供していないので、私が特定した質問に答えるだけです。あなたはこの部分配列で参加者を追加したい場合はどのようにサブアレー

for (var i = 0; i< Object.participants.length; i++){ 
Object.participants[i] //participant object. 
} 

を反復する

Object.participants.push(objectParticipant) //objectParticipant is an object defined by you 
+0

未定義のプロパティ 'length'を読み取ることができません –

+0

配列が空の場合はこれを取得します...配列を空にするその上。 –

+0

配列が空ではありません。それは2つ以上の要素を持っています。しかし、この配列の名前はgroupDetails4GroupAddedです。それはgroupDetails4GroupAdded.Object.participants.push(objectParticipant)のようにする必要がありますか?おそらく、はい! –

関連する問題