想在JavaScript Map中将数组作为值存储

6

我想创建一个键为字符串、值为数组的地图,就像下面这样。如何在地图中存储一个键为字符串的数组。

fruits : apple,orange,pineapple
countries:usa,uk,india,australia
cities:frankfurt,berlin,moscow

var map = new Object(); 

map['fruits'] = myObj1;
map['countries'] = myObj2;
map['cities'] = myObj2;

function get(k) {
    return map[k];
}

假设fruitscountriescities都已正确声明和初始化(它们不在上面),则上述代码有效。问题在哪里? - T.J. Crowder
那么 var myObj1 = ["apple", "orange", "pineapple"]; 应该可以工作吗? - javascriptlearner
2个回答

4

您可以在JavaScript中使用map()集合

var myObj1 =[" apple","orange","pineapple"]

var map = new Map();
map.set("fruits", myObj1);  // to set the value using key
alert(map.get("fruits"));   // to get the value 

DEMO


1
在指向一个仅支持ES6的功能的微软网页上进行指向,这其中有一定的讽刺意味...请尝试使用此链接 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map - Alnitak
1
如果你要展示一个只能在最新浏览器中运行的功能,你应该说明这一点。 - T.J. Crowder
@Alnitak 谢谢您提供有用的链接 :) - Balachandran
@Alnitak 我能理解其中的讽刺意味(尽管现在IE正在推动ES标准),但为什么MDN链接更可取? - JLRishe
@JLRishe 因为它包含更多的信息,包括跨浏览器兼容性(注意:IE11对Map的支持实际上非常差)。 - Alnitak

3

除了创建数组以外,您的代码将它们存储到map对象中是正确的。(但请参见下面更简洁的版本。)

这是已更正的数组初始化:

var fruits = ['apple', 'orange', 'pineapple'];
var countries = ['usa', 'uk', 'india', 'australia'];
var cities = ['frankfurt', 'berlin', 'moscow'];

var map = {}; // There's no reason to use `new Object()`

map['fruits'] = fruits;
map['countries'] = countries;
map['cities'] = cities;

function get(k) {
    return map[k];
}

这三行代码:
map['fruits'] = fruits;
map['countries'] = countries;
map['cities'] = cities;

也可以写成:

map.fruits = fruits;
map.countries = countries;
map.cities = cities;

但是你的代码可以更加简洁:
var map = {
    fruits: ['apple', 'orange', 'pineapple'],
    countries: ['usa', 'uk', 'india', 'australia'],
    cities: ['frankfurt', 'berlin', 'moscow']
};

function get(k) {
    return map[k];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接