javascript - 找到两个数组的可用组合(排列?)

标签 javascript arrays

很难用谷歌搜索这个问题,因为我不确定这些概念叫什么,并且所有“两个数组/组的组合”SO 帖子都没有给我我期望的输出。

数组示例:

var array1 = ['Bob', 'Tina'];
var array2 = [0, 100];

我可以通过两个数组的嵌套循环找到可能的组合。但这会给我这样的输出:

var array1 = ['Bob', 'Tina'];
var array2 = [0, 100];
var options = []

array1.forEach(function (name) {
  array2.forEach(function (number) {
    options.push([name, number])
  })
})


console.log(options);
> [ [ 'Bob', 0 ], [ 'Bob', 100 ], [ 'Tina', 0 ], [ 'Tina', 100 ] ]

这篇文章( Creating Combinations in JavaScript )给了我上面的输出

但是我真正想要的会给我这样的安排/组合:

[
  [['Bob', 0], ['Tina', 0]],
  [['Bob', 0], ['Tina', 100]],
  [['Bob', 100], ['Tina', 0]],
  [['Bob', 100], ['Tina', 100]]
]

并且它需要能够扩展更长的数组,但 2x2 是最简单的示例。

这里的笛卡尔示例( Matrix combinations of two arrays in javascript )也给了我分解的字符串,而不是相关的排列:

[ { '0': 'B', '1': 'o', '2': 'b' },
  { '0': 'B', '1': 'o', '2': 'b' },
  { '0': 'T', '1': 'i', '2': 'n', '3': 'a' },
  { '0': 'T', '1': 'i', '2': 'n', '3': 'a' } ]

我一直在通过谷歌等搜索,但我遇到了障碍,因为我不确定我真正在寻找什么。

最佳答案

我希望这可以帮助您获得实际的组合:

var array1 = ['Bob', 'Tina'];
var array2 = [0, 100];
var resultArray = []

for (var i = 0; i < array1.length; i++) {
  for (var j = 0; j < array2.length; j++) {
    var tempArray = [];
    tempArray.push(array1[i]);
    tempArray.push(array2[j]);
    resultArray.push(tempArray);
  }
}

for (var i = 0; i < array2.length; i++) {
  for (var j = 0; j < array1.length; j++) {
    var tempArray = [];
    tempArray.push(array1[j]);
    tempArray.push(array2[i]);
    resultArray.push(tempArray);
  }
}

console.log(resultArray);

关于javascript - 找到两个数组的可用组合(排列?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39417399/

相关文章:

javascript - 错误 SyntaxError : JSON. 解析:JSON 数据后出现意外的非空白字符

c - C中的数组问题

JavaScript 图像旋转

arrays - 在perl中如何运作 "$_ & 1"

javascript 无法将元素添加到字典中

javascript - 获取 javascript 节点原始内容

javascript - 如何过滤Json对象?

java - 我可以从父类(super class)对象数组中获取子类变量吗?

javascript - 使用 Javascript .includes 指定多个整数

javascript - 在 Highcharts 中平移将不允许回到 xAxis 的最大值