如何转换数组?能否使用map方法实现指定数组结构转换?
解决方案:数组结构转换
当然可以实现这个转换,而且有几种不同的方式,根据你的实际场景选就行~
场景1:原数组只有单个元素(就是你给出的情况)
这种情况最直接的方式根本不需要用map,直接提取第一个对象的属性值就搞定了:
const originalArr = [ { foo:{ name: 'One', value: 10 }, bar: { name: 'Two', value: 20 } } ]; const transformedArr = Object.values(originalArr[0]); console.log(transformedArr); // 输出: [ { name: 'One', value: 10 }, { name: 'Two', value: 20 } ]
Object.values()会把对象的所有属性值提取成一个数组,刚好完美匹配你的需求。
场景2:原数组可能有多个类似的对象
如果你的数组以后可能扩展成多个元素(比如[{foo:..., bar:...}, {baz:..., qux:...}]),那用flatMap就很合适,它能同时完成映射和展平的操作:
const originalArr = [ { foo:{ name: 'One', value: 10 }, bar: { name: 'Two', value: 20 } }, { baz:{ name: 'Three', value: 30 }, qux: { name: 'Four', value: 40 } } ]; const transformedArr = originalArr.flatMap(item => Object.values(item)); console.log(transformedArr); // 输出: [ { name: 'One', value:10 }, { name:'Two', value:20 }, { name:'Three', value:30 }, { name:'Four', value:40 } ]
如果你非要用map的话也可以,只是map会返回一个二维数组,需要再用flat()展平一层:
const transformedArr = originalArr.map(item => Object.values(item)).flat();
总结
- 单个元素数组:用
Object.values(originalArr[0])最简洁高效 - 多个元素数组:优先用
flatMap,或者map+flat组合也能实现
内容的提问来源于stack exchange,提问作者kush1nado
相关产品推荐
相关产品推荐

