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

JavaScript中如何将Object.values()返回的二维数组合并为一维?

嘿,这个需求很容易实现,我给你分享几种实用的方法,你可以根据自己的习惯选~

方法1:用Array.prototype.flat()(最简洁直观)

这是ES2019之后支持的方法,专门用来扁平化数组,默认就能处理你这种二维数组的场景:

let errorMessages = { 
  firstName: ["It is too short", "Only English characters are valid"], 
  lastName: ["This field is required", "Only English characters are valid"] 
};

const flattenedArray = Object.values(errorMessages).flat();
console.log(flattenedArray);
// 输出:["It is too short", "Only English characters are valid", "This field is required", "Only English characters are valid"]

要是以后碰到更深层级的嵌套数组,还能给flat()传数字参数,比如flat(3)就能扁平化三层,非常灵活。

方法2:用Array.prototype.reduce()

如果需要更多自定义操作(比如合并时过滤某些内容),reduce会是个不错的选择,它能一步步把数组合并起来:

const flattenedArray = Object.values(errorMessages).reduce((accumulator, currentArray) => {
  return accumulator.concat(currentArray);
}, []);

这里的空数组[]是累加器的初始值,每遍历到一个子数组,就把它拼接到累加器里,最后得到一维数组。

方法3:用Array.prototype.concat()配合扩展运算符

这是一种比较经典的写法,利用扩展运算符把二维数组拆成多个单独的数组参数,再用concat合并:

const flattenedArray = [].concat(...Object.values(errorMessages));

扩展运算符...会把Object.values()返回的二维数组展开成两个独立的数组,concat接收这些数组参数后,会直接合并成一个一维数组。

内容的提问来源于stack exchange,提问作者S. Hesam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 11:02:58