그래서이 배열이 있다고합시다 :
[
{
source:"A",
country:"United States",
region:"Illinois",
city:"Chicago"
},
{
source:"B",
country:"United States",
region:"Illinois",
city:"Rock Falls"
},
{
source:"C",
country:"United States",
region:"Illinois",
city:"Sterling"
},
{
source:"D",
country:"United States",
region:"Illinois",
city:"Rock Falls"
},
{
source:"E",
country:"United States",
region:"Illinois",
city:"Rock Falls"
}
]
저는 위치 데이터에 대한 일부 IP를 "군중 소싱"하려고하는데, 각각 국가, 지역, 도시 속성 및 해당 특정 소스가있는 개체를 반환하는 5 개의 소스가 있습니다.
다음 조건에서 underscore.js를 사용하여 이상적인 결과를 선택하는 가장 좋은 방법은 무엇입니까?
다른 쌍보다 더 많이 발생하는 (도시, 지역) 쌍이있는 경우 해당 쌍 (및 국가 속성)을 선택하십시오.
다른 쌍보다 많이 발생하는 쌍이없는 경우 (예 : (a, a, b, b, c), (a, b, c, d, e)) 소스 E와 해당 정보를 선택합니다.
소스 E가없고 공통된 쌍이없는 경우 임의의 소스를 선택하십시오.
소스가 하나뿐이라면 분명히 선택하십시오.
일부 소스가 없을 수도 있습니다.
밑줄은 내가 좋아하는 것입니다. 이것은 모든 조건을 충족합니다. 길이가 0 인 배열이 전달되는 경우, 원하는 작업을 언급하지 않았으므로 undefined를 반환합니다.
var finder = function(arr){
var fTable = _.chain(arr).groupBy(function(elem){
return elem.region+elem.city+elem.country;
}).sortBy("length").reverse().value();
return (fTable[0] && fTable[1] && fTable[0].length > fTable[1].length && fTable[0][0])
|| _(arr).findWhere({source: 'E'}) || _(arr).shuffle()[0];
};
건배!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다