我有一个像这样的二维数组:
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/