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

时间:2018-11-29 05:37:23

标签: javascript json hashmap

我有一个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)

初始化一个新的Map并为其分配键值。 关键是“ affectedOn”。 由于许多元素中都有相同的键名(affectedOn),因此map消除了所有重复项并仅打印一个。即使它具有相同的名称,也可以打印所有键值。 预先感谢。

输出: Map

1 个答案:

答案 0 :(得分:2)

Map具有类似于对象的键值对,并且每个 distinct 键都有一个值。 (如果您想使用键if ((num1 % 2 != 0) || (num2 %2 !=0)) { return true; } else { return false; } if ((num1 % 2 == 0) && (num2 %2 ==0)) { return false; } else { return true; } k1,然后先调用k2,然后再调用k1 === k2,然后使用{ {1}}将被覆盖。)

如果要将输入数组中的一切转换为myMap.set(k1,确保键唯一的一种方法是使键 objects (彼此不会myMap.set(k2

k1

Map

相关问题