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

标签 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 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);
 }

从上面的代码来看,由于许多元素中存在相同的键名称(affectedOn),因此map消除了所有重复项并在输出中仅打印一个。 有没有一种方法可以将键打印为字符串,将值打印为对象数组,而不消除具有相同键名称的对象。 提前致谢。

输出: Map

预期输出 Expected

最佳答案

您似乎只想过滤 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);

关于javascript - 如果 hashMap 具有相同的键名称,如何获取对象数组中的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53539440/

相关文章:

javascript - json_decode 通过 $_POST 返回 NULL

javascript - 如何将一组元素包裹在 div 内联中?

javascript - jQuery 延迟没有按预期工作

json - 如何使用http发送json

c++ - 异构HashMap c++

java - 将 Map 的键值对作为对象访问

javascript - 绑定(bind)功能仅适用于最后一个元素

javascript - REST API,从 PHP 返回 JSON 对象到 JS 文件

arrays - 如何从 Swift 3 中的结构数组生成 JSON?

java - 如何给一个jtable单元格不同的背景颜色