gpt4 book ai didi

javascript - 如何通过每次从所有行中取一个值来获取带有循环的二维数组中值的所有组合?

转载 作者:行者123 更新时间:2023-11-30 14:01:46 29 4
gpt4 key购买 nike

我正在处理的二维数组在每一行上可能有不同的长度,例如:

var a = [1, 2, 3];
var b = ["orange", "poke"];
var c = ["melon", "table", 93, 71, "rock"];
var arrayA = [a, b, c];

我想像这样从数组中获取值的所有组合:

var result = [arrayA[0][0], arrayA[1][0], arrayA[2][0]];
//some operation with result
result = [arrayA[0][0], arrayA[1][0], arrayA[2][1]];
//some operation with result
result = [arrayA[0][0], arrayA[1][0], arrayA[2][2]];
//some operation with result
.
.
.
.
.
.
result = [arrayA[0][2], arrayA[1][1], arrayA[2][4]];
//some operation with result

在处理 javascript 中具有不同长度的2D 数组 时,是否可以通过循环实现这些?如果没有,还有其他方法吗?谢谢

最佳答案

如果你想得到每个组合并对每个组合做一些事情,一个很好的处理方法是使用 generator .这避免了在内存中创建一个潜在的大列表,同时仍然可以方便地遍历每个组合。例如:

var a = [1, 2, 3];
var b = ["orange", "poke"];
var c = ["melon", "table", 93, 71, "rock"];
var arrayA = [a, b, c];

function* productGen(arr, cur = []){
if (arr.length < 1) yield cur
else {
for (let item of arr[0]) {
yield* productGen(arr.slice(1), [...cur, item])
}
}
}

for (let combo of productGen(arrayA)){
// do something with combo
console.log(combo)
}

关于javascript - 如何通过每次从所有行中取一个值来获取带有循环的二维数组中值的所有组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56204012/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com