2017-03-12 2 views
3

나는lodash 분할 배열

_.each(groups,function(group){ 
var n = 50; 
var lists = _.groupBy(group, function(element, index){ 
    return Math.floor(index/n); 
}); 
lists = _.toArray(lists); 
console.log(lists) 
}) 

이하이에서 잘 작동 등 lodash 사용하여 내가 N 크기의 덩어리로 자바 스크립트 배열을 분할하고

이제
var groups = {"GROUP":[{'G1: [C1,C2,C3........C500000]}, 
      {'G2': [C1,C2,C3........C500000,D1,D2,D3........D500000]} 
.....] 
    } 

연락처와 그룹 아래가 클라이언트 끝이지만 nodej에는 없습니다. 다음과 같이 노드 js에서 출력

[["C1","C1....]] 

어레이는 청크로 분할되지 않고 단일 어레이로 제공됩니다.

예상 배열 내가 nodejs.Please에 lodash 4.17.4을 사용하고

[["C1","C1"....,"c50"],["C51","C1"....,"c100"]...] 

는 조언을해야

+0

다른 lodash 버전 : 내가 당신이라면

나는 줄이기 문이 청크 동작을 얻을 것인가? –

+0

@LodewijkBogaards nodejs에서 lodash 4.17.4를 사용 중입니다. – mymotherland

답변

1

이 노드에 비해 브라우저의 다른 버전을 사용하여 함께 할 수있는 뭔가가 있어야하기 때문에 groupBy in Lodash 4.17.4의 코드를 보면, 전달하는 함수 인 iteratee이 하나의 인수, 즉 키가 아닌 키만 호출된다는 것을 분명히 알 수 있습니다.

function groupBy(collection, iteratee) { 
    return reduce(collection, (result, value, key) => { 
    key = iteratee(value) // <- no index here 
    if (hasOwnProperty.call(result, key)) { 
     result[key].push(value) 
    } else { 
     baseAssignValue(result, key, [value]) 
    } 
    return result 
    }, {}) 
} 

groupBy.js의 모든 git 내역을보고 나는 시간이 지남에 따라 동작이 변경되지 않았다는 사실에 놀라지 않습니다. 얼마 전까지 만해도 인덱스가 포함될 수있는 일반 iteratee를 사용하는 것으로부터 완전히 변경되어 인덱스를 포함하지 않는 훨씬 단순한 것으로 바뀌 었습니다. 아마도

function chunkArray(array, chunkSize) { 
    return _.reduce(array, function(result, value) { 
    var lastChunk = result[result.length-1]; 
    if (lastChunk.length < chunkSize) lastChunk.push(value); 
    else result.push([value]); 
    return result; 
    }, [[]]); 
} 
+0

고마워요 @Lodewijk :) – mymotherland