2016-09-26 3 views
0

image_urlnullの数が少なくてもimage_urlだけを返す方法はありますか?ループ内にヌル値を戻さない

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

では反応:

... 

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

... 

を私はコンソールのWebリンクと一緒にnullを得続けます。リンクを持つimage_urlだけを取得する方法。 "Packaging"には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

エミールのように '.map'をチェーンする必要があります。 '.map(obj => obj.image_url)'といいですね。 –

+0

@SterlingArcherニース、短くポイントまで。互換性が問題であれば、 '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 
 
    }) 
 
)

関連する問題