从嵌套数组对象中移除外层键的实现困惑
解决数组对象提取问题
我来帮你搞定这个需求!你想要把每个嵌套在单个键值对里的对象直接提取出来,组成新数组对吧?先说说你之前的代码为啥没生效:
你的代码里有几个明显问题:
- 你在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
相关产品推荐
相关产品推荐

