2016-11-28 4 views
-1

単純な任意のデータに対して、オブジェクトの配列を使用したコードの例を示します。const 1ライナーのオブジェクト値を返す

下部に

constの機能私のフライト番号がflightNu

var flights = [{ 
     "id": 1234, 
     "airline": "Delta", 
     "depart": "11/23/2016 10:25 AM", 
     "arrive": "11/23/2016 11:35 AM", 
     "from": "TPA", 
     "to": "MEM" 
    }, { 
     "id": 4321, 
     "airline": "AA", 
     "depart": "11/23/2016 12:25 PM", 
     "arrive": "11/23/2016 2:35 PM", 
     "from": "DWF", 
     "to": "SEA" 
    }] 

var flightNu = 4321; 

const flightDetails = (a) => 
a.map(f => (f.id == flightNu) ? f : null) 


console.log(flightDetails(flights)) 

として表さ見つけるだから私の質問は、適切にこれは[null, Object] オブジェクトを返している

const flightDetails = (a) => 
a.map(f => (f.id == flightNu) ? f : null) 

このconstの関数を定義してある正しいです1つ、飛行ニュー。 それを見つけました。クールですが、100個のオブジェクトを追加すると、99個のヌルが返されます。それは99の問題ですが、一致するフライト番号は1つではありません。 (申し訳ありません)

誰かがこれを使用する良い方法についていくつかの光を当てることができますか?たぶん私は三項演算子を使うべきではない。もし私が適切なf[index]を返すことができれば素晴らしいだろう。

は、好ましくは、別の変数

var MatchingFlight; 

const flightDetails = (a) => 
a.map(f => { 
    if (f.id === flightNu){ 
       MatchingFlight = f; 
    } 
}) ? MatchingFlight : null //returns Object {} close but meh 

にオブジェクトを割り当てずにこのコードは、提案されたゴール感覚で動作しますが、スコープ外MatchingFlightを定義するconstのために右のようではありません。

+2

のようなものを返すJavaScriptでfilterを使用することができます。 'map'の代わりに –

+4

は' filter'を使います。 – abhishekkannojia

+0

@torazaburoよく動作するシナリオのアップデートを追加しました。他のスニペットも動作しますが、真の答えはスニペットではない3つの可能なメソッドを持つSLakです。完全性のためにスニペットで更新したいだけでした – teachtyler

答えて

0

あなたが最初の試合をしたい場合は、代わりに `.MAP()`の `.findを()`を使用フィルタに一致する要素にこの

const flightDetails = (a) => 
a.filter(f => (f.id == flightNu)) 
+0

今回は三元演算子を使用しなかった以外は、フィルターで周りを回って同じことをやってきました。私はそれとも重要なのでしょうか? – teachtyler

+0

これは、オブジェクトが未定義である場合には、三項演算子を使用できます。なぜなら、失敗した場合、nullに割り当てるためです。それ以外の場合は、三項演算子を使用する必要はありません。お役に立てれば。あなたの質問に答えましたか? – Ajaykumar

4

map()は、すべての要素を別のものに変換します。 これはあなたが望むものではありません。

filter()(一致する要素のみを返します)またはfind()(最初の一致を返します)がmap()ではありません。

+0

'find()'は特定の場合には良いでしょうが、 'filter()'は配列を返し、複数の飛行番号が引数として見つかったとしましょう。 – teachtyler

関連する問題