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