2017-11-07 11 views
0

저는 로다시에 익숙하지 않습니다. 빈 배열 값을 제외하고 값으로 비어 있지 않은 배열을 가진 객체를 반환합니다. filteredResultslodash : 비어 있지 않은 배열의 값을 가진 객체를 필터링하십시오.

let results = {"1":[1,2,3],"2":[2,4,6],"0":[]}; 
let filteredResults = _.filter(results, (result) => {return (_.size(_.values(result)) > 0);}); 
console.log(filteredResults); 

내 예상 값은 다음과 같습니다 {'1': [ 1, 2, 3 ], '2': [ 2, 4, 6 ] }. 그러나 나는 [ [ 1, 2, 3 ], [ 2, 4, 6 ] ]의 결과를 얻고 있습니다.

12의 키는 어디에 있습니까?

답변

1

_.filter 메서드는 첫 번째 인수로 객체를 허용 할 수 있지만 원래 객체의 허용 된 값을 가진 배열을 반환합니다. 평가

let filteredResults = _.pickBy(results, value => value.length > 0) 
1

당신은 reduce를 사용하여 각 결과의 키와 값에 액세스 할 수 있습니다 : 당신은 아마 필터를 전달하는 키/값 쌍으로 객체를 반환하는 대신 _.pickBy 방법을 사용하려면 그들을 새로운 대상으로 밀어 넣습니다. 방법은 다음과 같습니다.

let filteredResults = _.reduce(results, (result, value, key) => { 
    if (value.length > 0) { 
     result[key] = value; 
    } 
    return result; 
}, {});