user5283666
user5283666

Reputation:

Iterate over object property with same name

I have an array of objects, and each object might include properties that are named the same. How do I iterate over the objects property to extract each entry?

I've tried the code below but it only gives me the last property in the object. Any ideas?

var clearingnumberz = [{
    "Namn": "Nordea",
    "Clearingnummer": "1100-1199",
    "Clearingnummer": "1400-2099",
    "Clearingnummer": "3000-3399",
    "Clearingnummer": "3410-4999"
  },
  {
    "Namn": "Danske Bank",
    "Clearingnummer": "1200-1399",
    "Clearingnummer": "9180-9189"
  },
  {
    "Namn": "Handelsbanken",
    "Clearingnummer": "6000-6999"
  },
  {
    "Namn": "JP Nordiska",
    "Clearingnummer": "2300-2309"
  }
];


function SearchForBankName() {

  var userInput = document.getElementById("bankTxt").value;

  for (var bank in clearingnumberz) {

    var currentObject = clearingnumberz[bank];

    if (userInput === currentObject.Namn) {

      for (var clearingnumber in currentObject) {
        console.log(currentObject.Clearingnummer);
      }
    }
  }
}
<input id='bankTxt' placeholder="search a value in Bank" value="Handelsbanken">
<input type="button" onclick="SearchForBankName()" value="search">

Upvotes: 2

Views: 2060

Answers (2)

Nina Scholz
Nina Scholz

Reputation: 386602

Fo a faster access, you could convert your data (with arrays) to a hash table and get the name with the number as key.

var clearingnumberz = [{ namn: "Nordea", clearingnummer: ["1100-1199", "1400-2099", "3000-3399", "3410-4999"] }, { namn: "Danske Bank", clearingnummer: ["1200-1399", "9180-9189"] }, { namn: "Handelsbanken", clearingnummer: ["6000-6999"] }, { namn: "JP Nordiska", clearingnummer: ["2300-2309"] }],
    numberz = Object.create(null);

clearingnumberz.forEach(function (bank) {
    bank.clearingnummer.forEach(function (clearingnumber) {
        numberz[clearingnumber] = bank.namn;
    });
});

console.log(numberz['6000-6999']);
console.log(numberz);    

Upvotes: 1

Madara&#39;s Ghost
Madara&#39;s Ghost

Reputation: 174967

No, you don't. JavaScript objects may not have properties with the same name. So your objects don't actually look like that.

const obj = {
  "Namn": "Nordea",
  "Clearingnummer": "1100-1199",
  "Clearingnummer": "1400-2099",
  "Clearingnummer": "3000-3399",
  "Clearingnummer": "3410-4999"
}

console.log(obj); // oops

In short, you can't do what you want. You have to change the way your data is modeled.

Upvotes: 1

Related Questions