简体   繁体   English

如果hashMap具有相同的键名,如何获取对象数组中的所有值

[英]How do I get all values in array of objects if hashMap has same key name

I have a JSON structure and code like below : 我有一个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 losses = villages.lossesOccured

const myMap = new Map()
const humanMap = new Map()

losses.forEach((data,index) => {
    var keys = data.affectedOn
    var objJSON = new Object();
    for (i = 0; i < keys.length; i++) {
        objJSON[keys] = data;
       }
       myMap.set(objJSON,data)
});

function extactLosses(){
    myMap.forEach(loss => {
        if(loss.affectedOn === "humans"){
            humanMap.set(loss.affectedOn,[loss])
     }

for (var [key, value] of humanMap) {
    console.log(key , value);
 }

From the above code,since there are same key names(affectedOn) in many elements, map eliminates all duplicates and prints only one in the output. 从上面的代码中,由于许多元素中都有相同的键名(affectedOn),因此map消除了所有重复项,并且在输出中仅打印了一个。 Is there a way to print the key as string and value as array of objects without eliminating the ones with the same key name. 有没有一种方法可以将键以字符串和值的形式显示为对象数组,而不必消除具有相同键名的键。 Thanks in advance. 提前致谢。

Output: 输出: 地图

Expected Output 预期产量 预期

It seems like you just want to filter the lossesOccurred array to pull out the ones that were human losses. 似乎您只想过滤lossOccurred数组以提取那些人为损失的数组。

 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" } }, { "type": "physicalDamage", "affectedOn": "NOT humans", "quantity": 250, "reliefFund": 50000, "location": { "district": "thanjavur", "villageName": "madukkur", "pincode": "614903" } } ] }; const humanLosses = villages.lossesOccured.filter(loss => loss.affectedOn == 'humans'); console.log(humanLosses); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM