【问题标题】:How do I set multiple values in a Javascript Map at once?如何一次在 Javascript Map 中设置多个值?
【发布时间】:2018-01-19 03:28:00
【问题描述】:

我在这里有一个简单的逻辑链,其中 bigCities 是 Javascript 地图。在此示例中,d 表示从 csv 文件读取的数据数组中的每个对象。对于每个对象的 city 属性,我为其分配 d.pop 值(城市人口)。

bigCities.set(d.city, +d.pop)

如果我希望能够一次设置多个值怎么办?代码会不会像这样:

bigCities.set(d.city, ["population": +d.pop, "latitude": +d.lat, "longtitude": +d.lng)

是否可以在 Javascript Map 中创建键值对,其中值是数据数组?如果是这样,我将如何正确编写上面的示例?

【问题讨论】:

  • 当然你可以有一个数组作为 Map 条目的值,但是你的语法搞砸了。那应该是整数索引数组还是字符串键对象?
  • 更改为:bigCities.set(d.city, {"population": +d.pop, "latitude": +d.lat, "longtitude": +d.lng}); 这将使键成为城市名称,值将成为具有三个属性的对象。

标签: javascript arrays ecmascript-6 getter-setter


【解决方案1】:

要在Map 对象上设置多个键和值,您可以传递一个数组数组

let m = new Map([["a", [1,2,3]], ["b", [4,5,6]]]);

console.log([...m], m.get("a"))

【讨论】:

  • @le_m 或Object.values(d).forEach(({city, pop:population, lat:latitude, lng:longitude}) => bigCities.set(city, {population, latitude, longitude}))
  • 啊,我将“多个值”误解为“多个条目”。当然,像您一样将键与数组关联是一个合适的解决方案。
  • 同样,它也适用于集合。 newSet = new Set([1,2,3])
【解决方案2】:

我认为您正在寻找的是一个具有三个属性的对象。您可以将城市设为键,将类似的对象设为 Map 中的值,方法如下:

bigCities.set(d.city, {"population": +d.pop, "latitude": +d.lat, "longitude": +d.lng});

然后,再读一遍,你会这样做:

let info = bigCities.get(d.city);
console.log(info.population);
console.log(info.latitude);
console.log(info.longitude);

希望你能认出语法:

{"population": +d.pop, "latitude": +d.lat, "longitude": +d.lng}

作为 Javascript 文字对象声明。这将创建一个 Javascript 对象,其中包含三个属性/值对,您可以在其中按名称引用该属性。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 2019-08-23
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多