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
相关产品推荐
相关产品推荐

