2016-06-01 9 views
0

に一致するオブジェクトの最初のプロパティを取得します。その上で配列メソッドを使用しないでください。だから私はそのような構造を持っている状態

length > 0の最初の要素(この場合は文字)を取得するにはどうすればよいですか?

for (let letter in Foo) { 
    if (letter.length > 0) { 
     let match = letter; 
    } 
} 

私は、この(これは簡易版である)のようなものを試してみましたが、それはちょうどFooのすべてのプロパティを返します。

+5

オブジェクトに「first」という概念はなく、プロパティは順序付けられていません。また、* let *はブロックスコープであるため、ブロックの外側から* match *を返すのが難しくなります。 – RobG

+0

@RobG条件は、条件に一致する配列のセットを返すことになっています。私はちょうどこのセットの1番目を選びたいと思う。現実的ではありませんか? – knitevision

+0

これは可能ですが、返される値はホストによって異なりますので、結果は信頼できません。 – RobG

答えて

1

あなたがES6を使用してうれしいです。

var obj = { 
    a: [], 
    b: [], 
    c: [ 
    2, 
    3 
    ], 
    d: [], 
    e: [ 
    1 
    ] 
}; 

Object.keys(obj).find(a => obj[a].length > 0); // The letter "c" which contains the first non-empty array. 

obj[Object.keys(obj).find(a => obj[a].length > 0)]; // Array [2, 3] itself 

注実装間でのオブジェクトには、一貫した「最初」の要素がありませんということ:この場合、あなたは、特定のプロパティを持つ最初の要素を見つけるために、すべてのオブジェクトのキーの配列とArray.prototype.findを取得するためにObject.keysを使用することができます。

関連する問題