2016-09-26 4 views
0

image_urlnull이 거의 없을 때 image_url 만 반환하는 방법? 에서 루프에서 null 값을 반환하지 않음

var lineItems = [ 
    { 
    description: "Packaging", 
    image_url: null, 
    ... 
    }, 
    { 
    description: "T-Shirt", 
    image_url: <the-url-link>, 
    ... 
    } 
] 

는 반응 : 나는 콘솔에서 웹 링크와 함께 null가 계속

... 

lineItems.map(function(line){ 
    if (line.description !== "Packaging") { 
    var img = line.image_url; 
    } 
    console.log(img); 
}); 

... 

. 링크가있는 image_url 만 잡는 방법. "패키징"에는 image_url 링크가 없습니다. 항상 null이됩니다.

+0

'filter''null' 값 떨어져? –

+0

그런 식으로'map'을 사용하지 마십시오. 귀하의 상태는 igrones입니다. http://stackoverflow.com/questions/26716818/using-array-map-to-filter-results-with-if-conditional – DanilGholtsman

+0

@EmilS .Jørgensen 그냥 링크 만주세요. – Sylar

답변

2

여기서는 filter을 사용하면됩니다.

const nonNulls = lineItems.filter(item => item.image_url !== null); 

이렇게하면 null이 아닌 모든 값이 변수로 필터링됩니다.

+0

이 메서드는 개체를 반환하는, 난 단지 문자열 URL이 필요합니다. – Sylar

+2

Emil에서 사용 된 것처럼'.map'을 묶어야합니다. '.map (obj => obj.image_url)'그리고 너는 좋다. –

+0

@ 스털링 아처 짧고 요점. Confluence와'const' 그리고 [Lambda functions] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions). 호환성이 문제라면. –

2

var data = [ 
 
    { 
 
    url: null 
 
    }, 
 
    { 
 
    url: null 
 
    }, 
 
    { 
 
    url: '123' 
 
    }, 
 
    { 
 
    url: null 
 
    } 
 
] 
 
console.log(
 
    data.filter(function (a) { 
 
    return a.url != null 
 
    }).map(function (a) { 
 
    return a.url 
 
    }) 
 
)

관련 문제