Reputation:
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
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
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