javascript - 将二维数组转换为一维数组,交替使用它们的值

标签 javascript arrays loops multidimensional-array

我有一个像这样的二维数组:

let test2d = [
  ["foo", "bar"],
  ["baz", "biz"]
]

如果我想将这个二维数组转换为一维数组(不交替它们的值),我可以通过两种方式实现:

第一种方式:

let merged = test2d.reduce( (prev, next) => prev.concat(next) )
console.log(merged) // ["foo", "bar", "baz", "biz"]

第二种方式:

let arr1d = [].concat.apply([], test2d)
console.log(arr1d) // ["foo", "bar", "baz", "biz"]

问题:我怎样才能得到一个一维数组,但它们的值是交替的?我的意思是这样的:

["foo", "baz", "bar", "biz"]

最佳答案

您可以使用此处定义的zip 函数:Javascript equivalent of Python's zip function

let zip= rows => rows[0].map((_,c)=>rows.map(row=>row[c]))

所以你可以调用:

let arr1d = [].concat.apply([], zip(test2d))

完整代码如下:

let test2d = [ ["foo", "bar"], ["baz", "biz"] ]

let zip = rows => rows[0].map((_, c) => rows.map(row => row[c]))

let arr1d = [].concat.apply([], zip(test2d))

console.log(arr1d)

关于javascript - 将二维数组转换为一维数组,交替使用它们的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50497688/

相关文章:

javascript - typescript 导致语法错误

javascript - 代码无法在浏览器中工作,但可以在截图工具中工作

php - 选择获取数组中的不同项目

python - 如何将列表中的每个元素与嵌套列表相乘并获得总和?

javascript - 遍历特定对象和特定属性

javascript - 重新绘制柱形图之间存在间隙的问题

Javascript 正则表达式仅允许在开头添加一个加号 (+),字符串长度不得超过 15 个字符

javascript - 即使使用 if 语句也获取未定义的值

loops - 为什么这个 IF 语句不需要 End IF

loops - 您如何编写代码在 MIPS 中执行阶乘?