如何使用动态值数组在javascript中创建地图

时间:2015-10-08 15:54:39

标签: javascript node.js dictionary functional-programming

我有这个要求。根据函数中传递的参数数量,我需要在地图中创建许多条目。假设我有一个函数myfunc1(a,b,c),我需要有一个带键的地图为" a"," b"和" c"我可以为每个键设置多个值。但问题是我事先不知道,这些键会有多少值。当值到达时,我需要将它们添加到与映射中的匹配键对应的值列表中。我如何在javascript中执行此操作?我找到了如下的静态答案。但我想动态地这样做。我们可以使用推送方法吗?

var map = {};
map["country1"] = ["state1", "state2"];
map["country2"] = ["state1", "state2"];

2 个答案:

答案 0 :(得分:8)

我认为这就是你要问的。如果地图中没有密钥,addValueToList将动态创建数组/列表。

//initially create the map without any key
var map = {};

function addValueToList(key, value) {
    //if the list is already created for the "key", then uses it
    //else creates new list for the "key" to store multiple values in it.
    map[key] = map[key] || [];
    map[key].push(value);
}

答案 1 :(得分:1)

您可以使用参数列表使用与作为参数传入的字符串对应的键填充对象。然后你可以编写另一个函数来用数据填充这个地图。

var createMap = function() {
    var map = {};
    Array.prototype.slice.call(arguments).forEach(function ( arg ) {
        map[arg] = null;
    });
    return map;
}

所以createMap('para1', para2', para3')将返回一个带有3个键的对象:para1,para2,para3。全部为null值。如果你想在一个函数中完成所有操作,你可以使用对你想要密钥的数据的引用来显然替换null。