2016-12-06 8 views
0

何個あるかに応じて、javascript-mapから0,1または2の画像を返したいと思います。マップから配列を返す方法は?

function images() { 
    if (item.has('images')) { 
     const response = [item.get('images').get(0)] 
     if(item.get('images').has(100)){ 
     response.push(item.get('images').get(1)) 
     } 
     return response 
    } else { 
     return [] 
    } 
    } 

これは私が現在行っている方法です。画像の配列があれば、簡単に行うことができます

return arr.slice(0,2) 

私はマップで同様のことをすることができますか?

+4

'Array.from(map.values())。slice(0,2)'? –

+0

map.values()は私の例になりますか? – Himmators

+1

おそらく 'Array.from(item.get( 'images')。values())。slice(0、2)'です。 –

答えて

1

はい! Map sが反復可能であり、あなたは簡単に反復可能オブジェクトをdestructureことができます。

const m = new Map([['a', 1], ['b', 2], ['c', 3]]); 
const [head, next] = m.values(); 
console.log(head, next); 

は具体的に、私はMap.prototype.values方法はあなたを助けると思います。マップから値の反復可能(配列である必要はない)を返します。私は最善の方法はよく分からないが、

function images (m) { 
    if (m.has('images')) { 
    const data = m.get('images'), values = data.values(); 
    if (data.size < 100) { 
     const [head] = values; 
     return [head]; 
    } else { 
     const [head, next] = values; 
     return [head, next]; 
    } 
    } else { 
    return []; 
    } 
} 

あなたは、繰り返し[foo, bar] = bazパターンをクリーンアップすることができる場合があります

は、ロジックの少しをすることを組み合わせます。 Felix Kling's commentArray.fromsliceは確かに動作しますが、大きな地図では遅いかもしれません。

関連する問題