Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当json具有相同名称的键时,new Map()在javascript中如何工作_Javascript_Json_Hashmap - Fatal编程技术网

当json具有相同名称的键时,new Map()在javascript中如何工作

当json具有相同名称的键时,new Map()在javascript中如何工作,javascript,json,hashmap,Javascript,Json,Hashmap,我有一个JSON结构和如下代码: const villages = { "lossesOccured": [ { "type": "destroyed", "affectedOn": "humans", "quantity": 120, "reliefFund": 100000, "location": { "distr

我有一个JSON结构和如下代码:

const villages = 
{
"lossesOccured":
    [
        {
            "type": "destroyed",
            "affectedOn": "humans",
            "quantity": 120,
            "reliefFund": 100000,
            "location": {
                "district": "thanjavur",
                "villageName": "madukkur",
                "pincode": "614903"
            }
        },
        {
            "type": "physicalDamage",
            "affectedOn": "humans",
            "quantity": 250,
            "reliefFund": 50000,
            "location": {
                "district": "thanjavur",
                "villageName": "madukkur",
                "pincode": "614903"
            }
        },
    ]
}

const lossesArray = villages.lossesOccured

let myMap = new Map()

lossesArray.forEach(loss => {
    if(loss.affectedOn === "humans"){
        myMap.set(loss.affectedOn,loss)
    }
})

 console.log(myMap)
初始化一个新映射并为其分配键和值。 关键是“影响”。 由于在许多元素中有相同的键名(affectedOn),所以map会消除所有重复项并只打印一个。是否有一种方法可以打印所有键值,即使它具有相同的名称。 提前谢谢

输出:

贴图具有与对象类似的键值对,并且每个不同的键都有一个值。(如果要使用键
k1
k2
,以及
k1===k2
,并调用
myMap.set(k1
,然后再调用
myMap.set(k2
),则将覆盖
k1
指定的初始值。)

如果要将输入数组中的所有内容都转换为
映射
,确保键唯一的一种方法是使键对象(不会相互关联):

const村庄={
“发生丢失”:[{
“类型”:“已销毁”,
“受影响的人”:“人类”,
“数量”:120,
“救济品”:100000,
“地点”:{
“地区”:“thanjavur”,
“villageName”:“madukkur”,
“pincode”:“614903”
}
},
{
“类型”:“物理伤害”,
“受影响的人”:“人类”,
“数量”:250,
“救济品”:50000,
“地点”:{
“地区”:“thanjavur”,
“villageName”:“madukkur”,
“pincode”:“614903”
}
},
]
}
const lossesArray=villages.lossesOccursed
const myMap=新映射();
lossesArray.forEach(loss=>{
如果(loss.affectedOn==“人类”){
set({key:loss.affectedOn},loss);
}
});
console.log(myMap);
myMap.set({ key: loss.affectedOn }, loss);