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

为何JavaScript代码输出[object Object]而非预期内容?如何修复?

解决JavaScript数组toString()输出[object Object]的问题

嘿,这问题我见过不少——你调用all.toString()的时候,数组里的每个对象都会默认执行自身的toString()方法,而JavaScript里普通对象的默认toString()就是返回[object Object],所以整个数组转字符串后就变成一串这个了,完全不是你想要的属性信息。

给你几个实用的修复方案,按需选就行:

方案1:手动遍历拼接(最灵活,适合自定义展示格式)

直接遍历数组里的每个对象,把你需要的origin、type、time、link属性拼接成清晰的字符串,还能加换行让页面显示更舒服:

function replace(){
  let displayText = '';
  all.forEach(foodItem => {
    displayText += `产地: ${foodItem.origin}, 类型: ${foodItem.type}, 耗时: ${foodItem.time}分钟, 链接: ${foodItem.link}<br>`;
  });
  document.getElementById("demo").innerHTML = displayText;
}

方案2:用JSON.stringify快速输出结构化内容(适合快速调试)

如果只是想快速看到完整的数据结构,用JSON.stringify()最省事,它能把数组和对象转成可读性强的JSON格式,配合<pre>标签还能保留缩进:

function replace(){
  const structuredStr = JSON.stringify(all, null, 2); // 第三个参数2是缩进空格数,让格式更整齐
  document.getElementById("demo").innerHTML = `<pre>${structuredStr}</pre>`;
}

方案3:自定义对象的toString方法(适合复用场景)

要是你以后还需要多次把这些对象转成字符串,可以给每个对象加自定义的toString()方法,这样再调用数组的toString()或者join()就会返回你想要的内容:

// 先给数组里的每个对象添加自定义toString
all.forEach(item => {
  item.toString = function() {
    return `${this.origin} | ${this.type} | ${this.time}分钟 | ${this.link}`;
  };
});

// 然后修改replace函数
function replace(){
  document.getElementById("demo").innerHTML = all.join('<br>');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:02:44