2011-12-10 27 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

如果你的意思是你不希望有定义l变量,所以您可以设置您list变量,一旦使用它,你可以这样做:

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 = {}而不是说obj = new Object()是好习惯。但是,如果属性值已知,则可以在一个步骤中创建具有属性的对象。在你的函数的情况下,你创建的t对象不会以任何方式进行操作,除了在返回它之前添加一个属性,所以你可以直接返回一个对象字面值,而不用三步完成。

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