从地图对象中删除中间对象

时间:2011-12-10 01:59:44

标签: javascript jquery

我有几个并且认为(知道)我做错了什么(或者可能更简单)。

 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

2 个答案:

答案 0 :(得分: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 :(得分:1)

jQuery .get()方法接受索引 所以,你可以写:

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