0
개체 (이름 및 전자 메일 주소) 배열을 giver -> receiver paired array로 바꾸려고합니다. 각 반복은 수령인의 수금자로부터 수작업을 제거하여 모든 수령 회원이 고유 한 파트너를 얻게합니다.전자 메일 목록/컬렉션 셔플 및 밑줄/낮은 대시를 사용하여 페어링
나는 로다시를 사용하여 믹스 인을 만들었습니다. 브라우저가 작동하지 않는 경우가 있습니다. 아마도 while
섹션에 문제가 있습니다.
_.mixin({
ldSanta: function (arr) {
var ret = [],
emailListCopy = _.assign(arr),
receiver = {};
_.times(_.size(emailListCopy), function (i) {
receiver = arr[i];
while (receiver === arr[i]) {
receiver = _.first(_.shuffle(emailListCopy));
}
var pair = {
'giver': arr[i],
'receiver': receiver
};
ret[i] = _.extend(pair);
emailListCopy = _.reject(emailListCopy, function (item) {
return item.name === receiver.name;
});
});
return ret;
}
});
예 : http://jsfiddle.net/ezhsLw16/10
좋은 생각 (JSFiddle 지금은 조금 느린되고 있습니다). 무리 감사! – rickysullivan