[英]How to return an array from a map?
我想从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)
我可以对地图做类似的事情吗?
是! 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
模式,尽管我不确定最好的方法。 Felix Kling对 Array.from
和slice
的评论当然可以工作,尽管在大型地图上可能会很慢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.