2016-08-10 1 views
-4
var wingb = [{ 
    "id": 1, 
    "data": { 
     "Name": "Jack", 
     "Unit": "DXMX", 
     "Cubicle": "TRV02 02 04 b 001", 
    } 
}, { 
    "id": 2, 
    "data": { 
     "Name": "John", 
     "Unit": "DXMX", 
     "Cubicle": "TRV02 02 04 b 002", 
    } 
}, { 
    "id": 3, 
    "data": { 
     "Name": "", 
     "Unit": "DXMX", 
     "Cubicle": "TRV02 02 04 b 003", 
    } 
}, { 
    "id": 4, 
    "data": { 
     "Name": "Jude", 
     "Unit": "DXMX", 
     "Cubicle": "TRV02 02 04 b 004", 
    } 
}, ]; 

var bookedSeats = []; 
var i = 0; 
do { 
    bookedSeats.push(wingb[i].id); 
    i++; 
} while (wingb[i].data.Name != ""); 
+0

あなたのコードは何を目的としています。ただ、[i]は.data.Name wingb '条件に焦点を当てる!=「」' – Satpal

+0

は私が.....これはあなたの人々にシンプルですが、私は十分なデータと、それは複雑に.....私は明快みんなを挙げてみましょうただ、私は完全な反復をしたいし、それが3番目の項目で停止することにしたいいけない.....私のコードでは不可能であるbookedseats配列にwingb配列の4番目の要素のIDをプッシュしたい...私はuの人を願っていますTNXは '<'それがする必要があるだろう –

+0

TNX、それを持って、私はコメントをあなたのいずれかを使用して、それを得ました、 '<='ではなく。 –

答えて

0

このようなことをします。

var bookedSeats =[]; 
for(i in wingb) 
{ 
    if(typeof wingb[i].data.Name!== "undefined" && wingb[i].data.Name !="") 
    { 
     bookedSeats.push(wingb[i].id) 
    } 
} 
+0

クールな仲間....私はそれを持っています.... tnxたくさん......しかし、どのようにそのポーズがある....少し詳細な方法で明確にすることができます.... –

+0

あなたはdo {} while()もあなたのケースでは良いとは限りませんが、あなたはwhile()ステートメントで間違った条件を書いていました.... 私は各オブジェクトを 'for(i in ....) 'で繰り返しました。 'array'と' object'で動作します。配列を渡すと、すべての反復で 'i'がインクリメントされます。オブジェクトを渡すと 'i'が各要素のキーになります。私はあなたのケース '私は' 'ループ'あなたは '配列'を渡すため... 'typeof'は要素/プロパティが存在しない場合に存在するかどうかをチェックしています。定義されていない場合は –

+0

を返すようにしてください。 –

0

3番目の項目で終わるように私は、最後の名前をプッシュすることができません。これで

do { 
    bookedSeats.push(wingb[i].id); 
    i++; 
} while (wingb[i].data.Name != ""); 

:それは""

0

すなわち、空の文字列を持つエントリを見つけた場合、あなたのwhileループはこれを置き換える停止します

do { 
    bookedSeats.push(wingb[i].id); 
    i++; 
} while (i < wingb.length); 
+0

....もう一度みんな........ウル貴重な時間を温存するために、すべての.... – nnnnnn

+0

@nnnnnnええ、私もそれを考えました。彼の配列が実際には 'id' 1で始まらないことが分かりました。ちょっと待って。私は私の答えを更新します。 '1':私は 'idのオブジェクトを持っている '0'彼は、配列要素で始まる0 –

+0

で' i'を初期化表示されませんでした。 – nnnnnn

0

項目は(ID:3)ので、名前を持っています空の文字列(Name: "")を使用して、次の文字列に進むことはありません。

do { 
    if (wingb[i].Name !== '') { 
    bookedSeats.push(wingb[i].id); 
    } 
    i++; 
} while (i < wingb.length); 
+0

うん、あなたは正しいです...しかし、私は、次の要素を表示させたい..... –

+0

名が空の文字列の配列のlenghではなくなるまでながらそう。プッシュでは、 'if'を追加して、名前が空の文字列ではないことを確認します。 – sagie

+0

もう一度涼しい.....私はこれを試したが、もし条件が満たされれば反復処理をどうやって行うのだろうか。 .. –

1

はあなたの上限としてwingb.lengthを使用して、代わりにfor loopを試してみてください。これにより、既存のすべての要素をループすることができます。

for (var i = 0; i < wingb.length; i++) { 
    // perform your operations on wingb[i]; 
} 

削除またはない名前を持っていない要素を操作する、あなただけの単一のプロパティを取得するために欠けている場合は不要なアイテム

// this will remove any wingb objects that don't have a name 
var itemsWithName = wingb.filter(function(item) { 
    return item.Name !== ""; 
}); 

を削除するArray.filterを使用する必要がある場合オブジェクトのコレクション、私は探してお勧めしますArray.map

// converts array of objects to array of ids 
var bookedSeats = wingb.map(function(item) { 
    return item.id; 
}); 
+0

これはいいと思いますが、どうすればすべての条件を統合できますか... –

+0

I don 'あなたのコード例では何らかの条件を参照してください。しかし、何をしようとしているのか少し詳しく説明すれば、私は助けることができるかもしれません。 –

+0

私はついにそれを得ました.....しかし、 array.mapとarray.filterの....... –

関連する問題