gpt4 book ai didi

javascript - 从数组值生成笛卡尔积对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:40:27 25 4
gpt4 key购买 nike

我正在根据某些数组中条目的排列构建一个对象数组。下面是我对代码的第一次尝试,它应该有助于说明我想要实现的目标:

permutationsArray = (array1, array2, array3) => {
const arrayOfObjects = [];
for (let i = 0; i < array1.length; i++) {
for (let j = 0; j < array2.length; j++) {
for (let k = 0; k < array3.length; k++) {
arrayOfObjects.push({
aConstant: 'some constant',
key1: array1[i],
key2: array2[j],
key3: array3[k],
});
}
}
}
return arrayOfObjects;
};

我真的很不满意用嵌套的 for 循环来实现这一点。我看过的替代方案是:

  • 使用嵌套映射并展平创建的树
  • 尝试类似于 this solution here 的递归系统

我正在寻找有关解决此问题的方向是否正确的意见。理想情况下,我希望能够提供尽可能多的阵列。

我遇到的一个大问题是如何使用递归命名键。

最佳答案

首先,这不是排列的问题,它正是笛卡尔积

集合理论中(通常在数学的其他部分),笛卡尔积数学 从多个 set 返回一个 set 的操作。

enter image description here

您可以使用 ES6 功能实现这一点,例如 mapreduce方法。

function cartesianProduct(...arrays) {
return [...arrays].reduce((a, b) =>
a.map(x => b.map(y => x.concat(y)))
.reduce((a, b) => a.concat(b), []), [[]]);
}
console.log(cartesianProduct([1, 2], [3, 4], [5, 6]));

关于javascript - 从数组值生成笛卡尔积对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46951223/

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