我想从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)
我可以用地图做类似的事情吗?
答案 0 :(得分:1)
是的! Map
是可迭代的,你可以轻松地解构迭代:
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
模式,但我不确定最佳方式。使用Array.from
和slice
的{{3}}肯定会有效,但大地图可能会很慢。