You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何返回完整JavaScript对象而非显示[object Object]?

问题:页面仅显示[object Object],无法展示完整对象内容

你编写了一段用于更新对象属性的代码,但尝试在页面上展示对象时,页面只显示[object Object],无法看到完整的对象结构。

原代码如下:

HTML代码

<div id="demo"></div>

JavaScript代码

const recordCollection = {
        2548: {
            albumTitle: 'Slippery When Wet',
            artist: 'Bon Jovi',
            tracks: ['Let It Rock', 'You Give Love a Bad Name']
        },
        2468: {
            albumTitle: '1999',
            artist: 'Prince',
            tracks: ['1999', 'Little Red Corvette']
        },
        1245: {
            artist: 'Robert Palmer',
            tracks:[]
        },
        5439: {
            albumTitle: 'ABBA Gold'
        }
    }

function updateRecords(records, id, prop, value) {
    let demo = document.getElementById('demo');
    
    if (prop !== "tracks" && value !== "") {
        records[id][prop] = value;
    } else if (prop === "tracks" && records[id].hasOwnProperty("tracks") === false) {
        // let add = [];
        records[id][prop] == [value];
    } else if (prop === "tracks" && value !== "") {
        records[id][prop].push(value);
    } else if (value === "") {
        delete records[id][prop];
    }

    demo.innerHTML = records;
    return demo;
}

updateRecords(recordCollection, 5439, 'artist', 'ABBA');

解决方案

1. 解决[object Object]的显示问题

直接将对象赋值给innerHTML时,JavaScript会自动调用对象的toString()方法,而默认的toString()返回值就是[object Object]。要展示完整对象结构,需要把对象转换成格式化的JSON字符串,使用JSON.stringify()方法即可:

修改这一行:

demo.innerHTML = records;

为:

// 第二个参数null表示不过滤属性,第三个参数2表示用2个空格缩进,让结构更清晰
demo.innerHTML = JSON.stringify(records, null, 2);

2. 修复代码中的赋值错误

在处理tracks属性不存在的分支里,你误用了比较运算符==,应该改成赋值运算符=,否则无法正确给对象添加tracks属性:

修改这一行:

records[id][prop] == [value];

为:

records[id][prop] = [value];

修改后的完整JavaScript代码

const recordCollection = {
        2548: {
            albumTitle: 'Slippery When Wet',
            artist: 'Bon Jovi',
            tracks: ['Let It Rock', 'You Give Love a Bad Name']
        },
        2468: {
            albumTitle: '1999',
            artist: 'Prince',
            tracks: ['1999', 'Little Red Corvette']
        },
        1245: {
            artist: 'Robert Palmer',
            tracks:[]
        },
        5439: {
            albumTitle: 'ABBA Gold'
        }
    }

function updateRecords(records, id, prop, value) {
    let demo = document.getElementById('demo');
    
    if (prop !== "tracks" && value !== "") {
        records[id][prop] = value;
    } else if (prop === "tracks" && !records[id].hasOwnProperty("tracks")) {
        records[id][prop] = [value];
    } else if (prop === "tracks" && value !== "") {
        records[id][prop].push(value);
    } else if (value === "") {
        delete records[id][prop];
    }

    demo.innerHTML = JSON.stringify(records, null, 2);
    return demo;
}

updateRecords(recordCollection, 5439, 'artist', 'ABBA');

内容的提问来源于stack exchange,提问作者Skynet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 13:45:28