2012-07-29 3 views
1

수집 방법과 랩 배열 : 지금 내가 사용 밑줄의 수집 방법은 (제거 nativly 수 있도록 밑줄 컬렉션 객체로 배열을 포장하고 싶은밑줄 : 나는 개체의 전체 배열이

var myArray = [{ "user": "anton" }, { "user": "joe" }]; 

을, 그것으로) 추가 :

myArray = _(myArray); // this only add object methods 
myArray.add({ "user": "paul" }); 

그래서 어떻게 사용하는 밑줄로 배열을 포장하는 일은

+0

이 대답을 살펴 보자 http://stackoverflow.com/a/4929935/950890 –

답변

2

는 일반적으로 배열 또는 객체를 포장하지 않는 API를 강조 수집 방법을 강조한다. 그냥 첫 번째 인수를 전달합니다. 예)

_.first([5, 4, 3, 2, 1]); //Note first argument 
=> 5 
var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }); 
=> [2, 4, 6] 

그러나 체인 (_.chain(obj))는 포장 오브젝트를 돌려줍니다. 이 오브젝트의 메소드를 호출하면 (자), 값이 사용 될 때까지 랩 된 오브젝트가 계속해서 돌려 주어집니다.

var stooges = [{name : 'curly', age : 25}, {name : 'moe', age : 21}, {name : 'larry', age : 23}]; 
var youngest = _.chain(stooges) 
    .sortBy(function(stooge){ return stooge.age; }) 
    .map(function(stooge){ return stooge.name + ' is ' + stooge.age; }) 
    .first() 
    .value(); 
=> "moe is 21" 

체크 밑줄 API : 허용 대답부터 공식적으로 http://underscorejs.org/#

+1

'_ (OBJ)를'* * ~ obj' – ggozad

+0

큰 @ggozad'포장 않습니다 ! –

+0

@hyogron check ggozad의 답변 ~ –

7

가 missleading된다 함수로 사용

밑줄, 즉,

_([a, b, c]) 
을 인수 포장됩니다

은 다음과 같습니다 :

이제

_.chain = function(obj) { 
    return _(obj).chain(); 
}; 

질문에 : 사실 chain에서

_.chain([a, b, c]) 

은 정의

당신은하지 않는 밑줄, 컬렉션을 제공하는 백본을 혼동. 백본 컬렉션은 어레이에서 쉽게 초기화 할 수 있습니다. 예를 들면

이 잘 작동합니다. 당신은 더 수행 할 수 있습니다

c.add({ "user": "paul" }); 
+2

'_ ([a, b, c])'는'_.chain ([a, b, c])'와 동일하지 않습니다. – Yaroslav