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

从嵌套数组对象中移除外层键的实现困惑

解决数组对象提取问题

我来帮你搞定这个需求!你想要把每个嵌套在单个键值对里的对象直接提取出来,组成新数组对吧?先说说你之前的代码为啥没生效:

你的代码里有几个明显问题:

  • 你在map回调里把当前遍历的元素a重新赋值成了空数组a = [],这直接把原本要处理的对象覆盖了
  • a.push[a]是错误语法,push是数组方法,得用圆括号调用:a.push(xxx)
  • 最重要的是,map函数需要回调返回新数组的元素,你的代码没有return任何内容,所以最终得到的会是全是undefined的数组

正确的解法

这里有几种简单的方式可以实现你的需求:

方法1:用Object.values()提取值

因为每个数组元素都是只有一个键的对象,Object.values()会把对象的所有值转换成数组,我们直接取第一个元素就行:

const originalArr = [{"1":{"name":"A","email":2}}, {"2":{"name":"B","email":3}}, {"3":{"name":"C","email":4}}, {"4":{"name":"B","email":5}}];
const resultArr = originalArr.map(item => Object.values(item)[0]);
console.log(resultArr);
// 输出:[{"name":"A","email":2}, {"name":"B","email":3}, {"name":"C","email":4}, {"name":"B","email":5}]

方法2:用Object.keys()获取键再取值

如果你更习惯通过键来访问,也可以这么写:

const resultArr = originalArr.map(item => {
  const key = Object.keys(item)[0];
  return item[key];
});

方法3:解构赋值简化写法

用解构可以让代码更简洁直观:

const resultArr = originalArr.map(item => {
  const [innerObj] = Object.values(item);
  return innerObj;
});

这几种方法都能完美得到你想要的结果,选你觉得最顺手的就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:05:02