使用new Map()-javascript映射单键多值

使用new Map()-javascript映射单键多值,javascript,Javascript,我需要使用map()将单个键映射为多个值。但我的价值观不断被改写。救命啊 var myMap=newmap(); myMap.set(“1”、“A”); myMap.set(“1”、“B”)AMap数据结构是一个键/值存储。单个键映射到单个值。因此,如果需要多个,则必须更改该值: var myMap = new Map(); myMap.set("1",["A","B"]); 使用如上所述的值数组,以使映射使用键“1”映射到多个值 在OP中第二次调用set,将覆盖第一个值。您有两个选项。

我需要使用map()将单个键映射为多个值。但我的价值观不断被改写。救命啊

var myMap=newmap();
myMap.set(“1”、“A”);

myMap.set(“1”、“B”)A
Map
数据结构是一个键/值存储。单个键映射到单个值。因此,如果需要多个,则必须更改该值:

var myMap = new Map();

myMap.set("1",["A","B"]);
使用如上所述的值数组,以使
映射
使用键
“1”
映射到多个值

在OP中第二次调用
set
,将覆盖第一个值。

您有两个选项。
 var myMap = new Map();

 myMap.set("1",["A"]);
 myMap.set("1",["B", ...myMap.get('1')]);
为属性定义数组:

let myObj = {key1: ["value1", "value2"]};
或动态分配:

let myObj = {key1: "value2"};
myObj.key2 = ["value1", "value2"];
对于地图的一个键,您可以对多个值使用

函数设置值(映射、键、值){
如果(!map.has(键)){
map.set(键,新集合(值));
返回;
}
map.get(key)、add(value);
}
var myMap=newmap();
设定值(myMap,“1”、“A”);
设定值(myMap,“1”、“B”);

log(Array.from(myMap.entries(),([k,v])=>[k,[…v]])除非在特定对象中有一个唯一的键,否则无法在JavaScript中执行此操作

有效:

 {
    a: "1a23",
    b: {
        a: "23gh"
    },
    c: {
        a: 34
    }
 }
无效:-

{
    a: "1a23",
    a: "4354" //Not valid
    b: {
        a: "23gh",
        a: "sdfd" //Not valid
    },
    c: {
        a: 34
    }
 }
因为如果您试图获取“a”的属性值,编译器将如何确定您请求的是哪个。因此,如果您有相同的属性,或者您尝试像这样手动分配它,java脚本就会覆盖

let k = {
a: 1,
a:2
}
它将抛出一个错误。因此,您也可以使用数组来执行以下操作

let k = {
a: [1,2]
}
let k2 = myMap.set("a",[1,2]);

您可能希望该值是一个数组。如果您想像您的示例那样一次修改一个值,则需要获取该值,然后对其进行修改

var myMap=newmap();

myMap.set(“1”,[])//我认为映射键总是唯一的,那些多个值应该是逗号分隔的字符串,还是数组,还是。。。?