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

Node.js中如何将[{key: 'key'}, {key1: 'key1'}]转为{key: 'key'}, {key1: 'key1'}

解决Node.js控制台输出格式及循环变量冲突问题

首先,你的代码里藏着一个容易踩的小坑——循环变量命名冲突:外层循环和内层循环都用了i当变量名,这会导致内层循环的i直接覆盖外层的索引值,让整个循环逻辑乱掉。先把这个问题修复,内层循环换成j这类不同的变量名。

接下来看你要的输出格式需求:想把控制台打印的[{key: 'key'}, {key1: 'key1'}]改成{key: 'key'}, {key1: 'key1'}(去掉数组的方括号)。之前用join()得到(Object, Object),是因为Object.values()返回的数组里是对象,直接调用toString()会默认输出[object Object],我们得把对象转换成可读的字符串形式才行。

修正后的代码方案

var body = request.body; 
// 外层循环用i,避免和内层变量冲突
for (var i = 0; i < body.data.length; i++) { 
  var obj = body.data[i]; 
  var keys = Object.keys(obj); 
  // 内层循环改用j,防止变量覆盖
  for (var j = 0; j < keys.length; j++) { 
    // 获取当前键对应的数组值
    var valueArr = Object.values(obj[keys[j]]); 
    // 把数组里的每个对象转成可读字符串,再用逗号分隔
    var formattedOutput = valueArr.map(item => JSON.stringify(item)).join(', ');
    console.log(formattedOutput); 
  } 
}

代码说明

  1. 修复循环变量冲突:把内层循环的i换成j,保证外层循环的索引不会被内层干扰,逻辑能正常执行。
  2. 转换对象为可读字符串:用map()遍历valueArr里的每个对象,通过JSON.stringify()把对象转换成标准的JSON字符串(比如{"key": "key"}),再用join(', ')拼接成你想要的格式。

如果你希望输出和示例完全一致(键不带双引号),可以替换掉JSON.stringify(item),用自定义函数转换:

// 自定义对象转字符串函数
function objToString(obj) {
  return Object.entries(obj).map(([k, v]) => `${k}: '${v}'`).join(', ')
    .replace(/^/, '{').replace(/$/, '}');
}

// 替换map部分的代码
var formattedOutput = valueArr.map(item => objToString(item)).join(', ');

这样就能得到你想要的{key: 'key'}, {key1: 'key1'}输出了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:00:26