繁体   English   中英

如何从地图返回数组?

[英]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.fromslice 的评论当然可以工作,尽管在大型地图上可能会很慢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM