2017-11-06 16 views
-1

특정 개체 속성을 필터링하고 싶습니다. 해당 속성이 false이거나 undefined/null 인 경우 포함 시키십시오. 아래의 예에서 나는 맛있는 음식으로 요약하고있다. 깨어있는 것은 사실이 아니다. 그러나, 정의되지 않은/null 값을 포함하는 방법을 알아낼 수 없습니다.lodash 필터를 사용할 때 null/undefined 값을 포함하는 방법

var apples = [ 
    {isBruised: true, deliciousRating: 1}, 
    {isBruised: false, deliciousRating: 10}, 
    {deliciousRating: 9} 
]; 

_.sumBy(_.filter(apples, ['isBruised', false]), 'deliciousRating'); 

나는 19 개로 돌아가고 싶지만, 현재는 사과에서 맛있는 칭찬을 얻고 있습니다. [1].

답변

1

사용 _.reject() 대신 _.filter(). _.reject() 방법은 ...

_.filter; 이 메소드는 술어가 진실을 리턴하지 않는 콜렉션의 요소를 리턴합니다.

var apples = [ 
 
    {isBruised: true, deliciousRating: 1}, 
 
    {isBruised: false, deliciousRating: 10}, 
 
    {deliciousRating: 9} 
 
]; 
 

 
var result = apples.reduce(function(s, o) { 
 
    return o.isBruised ? s : s + o.deliciousRating; 
 
}, 0); 
 

 
console.log(result);

:

그리고 바닐라 JS에서

var apples = [ 
 
    {isBruised: true, deliciousRating: 1}, 
 
    {isBruised: false, deliciousRating: 10}, 
 
    {deliciousRating: 9} 
 
]; 
 

 
var result = _.sumBy(_.reject(apples, 'isBruised'), 'deliciousRating'); 
 

 
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
, 당신은 멍이되지 않는 항목 만 합계를 Array#reduce을 사용할 수 있습니다
1

나는 네이티브 필터 함수 .filter((v) => !v.isBruised)을 사용할 것입니다. isBruisednull, undefined, false 또는 존재하지 않는 경우 deliciousRating 키가 포함됩니다.

const apples = [ 
 
    {isBruised: true, deliciousRating: 1}, 
 
    {isBruised: false, deliciousRating: 10}, 
 
    {deliciousRating: 9} 
 
]; 
 

 
const r = _.sumBy(apples.filter((v) => !v.isBruised), 'deliciousRating'); 
 

 
console.log(r);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>