2011-12-10 9 views
0

私はこれらのいくつかを持って、私が何か間違っている(またはもっと簡単かもしれない)と思っています。マップから中間オブジェクトを削除tオブジェクト

html: 
<div class='item-to-select' data-global-id='55'>some</div> 


var l=$(this).map(function(){ 
    t=new Object(); 
    t.global_id=$(this).data('global-id'); 
    return t; 
}).get(); 
var list=l[0]; // want to remove this 

この中間オブジェクトを削除するにはどうすればよいですか?またはより良い方法

THX

答えて

1

あなたは、あなたがこれを行うことができ、あなたのlist変数の設定に一度それを使用することができますちょうどのでl変数を定義する必要がしたくないことを意味している場合:

var list = $(this).map(function(){ 
       return { 
       global_id : $(this).data('global-id') 
       }; 
      }).get()[0]; // note the [0] directly after .get() 

配列(または配列のようなオブジェクト)を返す関数からの戻り値は、使用する前に変数に代入する必要はありません。したがって:

var temp = someFuncReturnsArray(); 
console.log(temp[0]); 
// can be replaced by 
console.log(someFuncReturnsArray()[0]); 

もちろん、返された配列に対してさらに処理を行う必要がある場合は、それを変数に入れる必要があります。たとえば、その長さをテストする必要がある場合、または関数がnullなどの状況で返される可能性がある場合などです。上記の例では、空の配列が返された場合、明らかに[0]は未定義です。

ただし、戻り値が必要なのは、一度直接使用するだけでよいのです。

t変数もコードから削除しました。空のオブジェクトを作成するときは、obj = new Object()というより、obj = {}と言うのがよい方法です。しかし、プロパティ値がすでにわかっている場合は、プロパティを持つオブジェクトを1ステップで作成できます。関数の場合、作成するtオブジェクトは、返す前に単一のプロパティを追加する以外の方法で操作されないため、オブジェクトリテラルを3つのステップで直接処理するのではなく、そのまま返すことができます。

1

jQuery .get()メソッドはインデックスを受け入れます。
だから、あなたが書くことができます。

var list=$(this).map(function(){ 
    t=new Object(); 
    t.global_id=$(this).data('global-id'); 
    return t; 
}).get(0); 
+0

は一つだけを受け入れることができます - 申し訳ありません – timpone

+0

問題ありません:)私たちは同時に、私たちの回答を掲載している:これらは、ネットの気まぐれです。 – CedX

関連する問題