我有几个并且认为(知道)我做错了什么(或者可能更简单)。
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
答案 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);