2017-03-27 4 views
1

이미 객체의 정렬 된 배열에 객체를 추가하려고합니다. 새로운 배열을 새 객체를 추가 한 후에 정렬해야합니다.Lodash 이미 정렬 된 객체에 객체 추가

여기에 지금은 그래서는 3, 4 인덱스 사이에 배치됩니다 추가 한 후

{ 
    "id": "07BSSC25", 
    "displayName":"Mail" 

    } 

를 추가 할 객체 속성 DisplayName

[ 
    { 
    "id": "06BCCC25", 
    "displayName":"Application" 

    }, 
    { 
    "id": "39F886D9", 
    "displayName":"Communication" 
    }, 
    { 
    "id": "22EA4ED5", 
    "displayName":"Device" 
    }, 
    { 
    "id": "2F6E5FEA", 
    "displayName":"Service" 
    }, 
    { 
    "id": "317BF72C", "displayName":"Service02" 
    } 

] 

에 따라 내 정렬 된 배열입니다.

당신이 볼, 그것을 위해 _.sortedIndexBy()을 사용할 수 있습니다

답변

4

:

예를 들어 당신이 사용할 수 있습니다 array 개체의 배열입니다

array.splice(_.sortedIndexBy(array, value, iteratee), 0, value); 

, value가있다 삽입 할 새 객체 및 iteratee은 요소별로 호출되는 함수입니다. 정렬 할 값을 반환하지만 속성 이름이 될 수도 있습니다.

그래서 한 이런 경우 뭔가 작동합니다 :
array.splice(_.sortedIndexBy(array, value, 'displayName'), 0, value); 

그냥 arrayvalue에 대한 새로운 개체의 배열 이름을 대체합니다.

참조는 설명 GitHub의에서이 문제 : 당신이 그것을 많이 사용하는 경우는 예를 들어, lodash 기능을 추가 할 수 있습니다

:

_.insertSorted = (a, v) => a.splice(_.sortedIndex(a, v), 0, v); 
_.insertSortedBy = (a, v, i) => a.splice(_.sortedIndexBy(a, v, i), 0, v); 

그리고 귀하는 귀하의 경우에 사용할 수 있습니다.

_.insertSorted(array, value, 'displayName');