[英]How to create dynamically named objects based on array values in javascript
[英]how to create a map in javascript with array of values dynamically
我有这个要求。 根据函数中传递的参数数量,我需要在地图中创建许多条目。 假设我有一个函数myfunc1(a,b,c),我需要一个带有键的地图,如“a”,“b”和“c”,我可以为每个键设置多个值。 但问题是我事先不知道,这些键会有多少值。 当值到达时,我需要将它们添加到与映射中的匹配键对应的值列表中。 我如何在javascript中执行此操作? 我找到了如下的静态答案。 但我想动态地这样做。 我们可以使用推送方法吗?
var map = {};
map["country1"] = ["state1", "state2"];
map["country2"] = ["state1", "state2"];
我想这就是你要问的。 如果地图中没有键, 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);
}
您可以使用参数列表使用与作为参数传入的字符串对应的键填充对象。 然后,您可以编写另一个函数来使用数据填充此地图。
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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.