Как new Map () работает в javascript, когда json имеет ключи с тем же именем - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть структура и код 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)

Инициализировал новую карту и присвоил ей ключ и значения.Ключ "влияет на".Поскольку во многих элементах присутствуют одинаковые имена ключей (disabledOn), карта удаляет все дубликаты и печатает только один.Есть ли способ распечатать все значения ключа, хотя он имеет одно и то же имя.Заранее спасибо.

Выход: Map

1 Ответ

0 голосов
/ 29 ноября 2018

Карта имеет пары ключ-значение, аналогичные объекту, и будет иметь значение для каждого отдельного ключа.(Если вы хотите использовать клавиши k1 и k2 и k1 === k2, и вы вызываете myMap.set(k1, а затем myMap.set(k2, тогда начальное значение, назначенное k1, будет перезаписано.)

Если вы хотите превратить все во входном массиве в Map, один из способов убедиться, что ключи уникальны, состоит в том, чтобы сделать ключи объекты (которые выиграли=== друг другу):

myMap.set({ key: loss.affectedOn }, loss);

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

const myMap = new Map();
lossesArray.forEach(loss => {
  if (loss.affectedOn === "humans") {
    myMap.set({ key: loss.affectedOn }, loss);
  }
});

console.log(myMap);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...