【问题标题】:How do I get all values in array of objects if hashMap has same key name如果 hashMap 具有相同的键名,如何获取对象数组中的所有值
【发布时间】:2019-05-01 12:59:12
【问题描述】:

我有一个 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 会消除所有重复项并在输出中仅打印一个。 有没有办法将键打印为字符串,将值打印为对象数组,而不会消除具有相同键名的对象。 提前致谢。

输出:

预期输出

【问题讨论】:

  • 你能澄清你在寻找什么输出吗?以您的输入为例,您期望结果是什么?
  • 当然,我已经添加了预期输出的图像

标签: javascript json hashmap


【解决方案1】:

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

【讨论】:

  • 哈希图中不能有多个“相同的键”。一人一个。你想做什么?
  • 谢谢,我将值保留为humanLosses,并将key 保留为affectedOn。现在它工作正常。
猜你喜欢
  • 1970-01-01
  • 2021-11-24
  • 2021-05-23
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 2021-04-28
  • 1970-01-01
相关资源
最近更新 更多