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

어떻게하면이 중간 개체를 제거 할 수 있습니까? 아니면 더 좋은 방법

들으

당신은 당신이 할 수있는 당신이 당신의 list 변수를 설정 한 번 사용할 수 있습니다 단지 있도록 l 변수를 정의해야하고 싶지 않은 것을 의미하는 경우

답변

1

:

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 = {}이라고하는 것이 좋습니다. 그러나 속성 값이 이미 알려진 경우 속성을 한 단계에 사용하여 개체를 만들 수 있습니다. 함수의 경우 사용자가 만든 객체 인 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