首页 > 解决方案 > 如何获取迭代对象的值

问题描述

我在一个对象中有一个对象,当我想迭代这些对象时。我成功获得了密钥但没有获得价值。这是我的代码:

let oPlaystation = {
    product: {
        Artikelnummer: 15118903,
        Fabrikantcode: 845784935,
        Merk: "Sony",
        Garantie: "2 jaar",
        Garantietype: "Carry-in-garantie"
    },
    algemeen: {
        platform: "Playstation 4",
        Aanbevolen_voor_virtual_reality: false,            
    },
    opslagcapaciteit: {
        Totale_opslagcapaciteit: "1000 GB",
        Werkgeheugen_uitbreidbaar: true,
        Maximale_capaciteit_geheugenkaart: "8000 GB"
    },
    Bedrade_aansluitingen : {
        Netwerkaansluiting: true,
        HDMI_ansluiting: true,
        USB_aansluiting: true,
        USB_versie: 3.0,
        Aantal_USB_poorten: 2
    }
}

let output = "";
Object.keys(oPlaystation).forEach(section => {    
    output += '<h3>' + section + '</h3>';        
    output += '<dl class="product-specs">';
    let features = Object.keys(oPlaystation[section]);
    features.forEach(attr => {    
    output += '<div class="product-specs__list-item">';
    output += '<dt class="product-specs__item-title">' + attr + '</dt>';
    output += '<dd class="product-specs__item-spec">' + features[attr] + '</dd>';
    output += '</div>';    
    });
    output += '</dl>';
});
document.body.insertAdjacentHTML("beforeend", output);

现在我在<dd>元素中得到 undefined 作为值。有谁知道如何解决这个问题?

标签: javascript

解决方案


您需要先使用第一个键,然后再使用第二个键

oPlaystation[section][attr]

代替

features[attr]

var oPlaystation = {
    product: {
        Artikelnummer: 15118903,
        Fabrikantcode: 845784935,
        Merk: "Sony",
        Garantie: "2 jaar",
        Garantietype: "Carry-in-garantie"
    },
    algemeen: {
        platform: "Playstation 4",
        Aanbevolen_voor_virtual_reality: false,            
    },
    opslagcapaciteit: {
        Totale_opslagcapaciteit: "1000 GB",
        Werkgeheugen_uitbreidbaar: true,
        Maximale_capaciteit_geheugenkaart: "8000 GB"
    },
    Bedrade_aansluitingen : {
        Netwerkaansluiting: true,
        HDMI_ansluiting: true,
        USB_aansluiting: true,
        USB_versie: 3.0,
        Aantal_USB_poorten: 2
    }
},
    output = '';


Object.keys(oPlaystation).forEach(section => {    
    output += '<h3>' + section + '</h3>';        
    output += '<dl class="product-specs">';
    let features = Object.keys(oPlaystation[section]);
    features.forEach(attr => {    
        output += '<div class="product-specs__list-item">';
        output += '<dt class="product-specs__item-title">' + attr + '</dt>';
        output += '<dd class="product-specs__item-spec">' + oPlaystation[section][attr] + '</dd>';
        output += '</div>';    
    });
    output += '</dl>';
});

document.body.innerHTML += output;


推荐阅读