现在有这几个数据
let names = ["iPhone X", "iPhone XS"]let colors = ["黑色", "白色"]let storages = ["64g", "256g"]
要转换成
[ { "spec": [ { "name": "iPhone X" }, { "name": "黑色" }, { "name": "64g" } ] }, { "spec": [ { "name": "iPhone X" }, { "name": "黑色" }, { "name": "256g" } ] }, { "spec": [ { "name": "iPhone X" }, { "name": "白色" }, { "name": "64g" } ] }, { "spec": [ { "name": "iPhone X" }, { "name": "白色" }, { "name": "256g" } ] }, { "spec": [ { "name": "iPhone XS" }, { "name": "黑色" }, { "name": "64g" } ] }, { "spec": [ { "name": "iPhone XS" }, { "name": "黑色" }, { "name": "256g" } ] }, { "spec": [ { "name": "iPhone XS" }, { "name": "白色" }, { "name": "64g" } ] }, { "spec": [ { "name": "iPhone XS" }, { "name": "白色" }, { "name": "256g" } ] }]
let names = ["iPhone X", "iPhone XS"];let colors = ["黑色", "白色"];let storages = ["64g", "256g"];const r1 = names.map(name => ({ name }));const r2 = r1.flatMap(it => colors.map(name => [{ ...it }, { name }]));const r3 = r2.flatMap(it => storages.map(name => [...it, { name }]));const r = r3.map(spec => ({ spec }));console.dir(r, { depth: null });
补充了一个函数
function multiply(...arrayList) { return arrayList .reduce( (r, arr) => r.flatMap(it => arr.map(name => [...it, { name }])), [[]] ) .map(spec => ({ spec }));}console.dir(multiply(names, colors, storages), { depth: null });
要生成笛卡尔积,你可以使用嵌套循环来遍历每个数组的元素,并构建所需的输出数组。下面是一个使用 JavaScript 实现的示例代码:
let names = ["iPhone X", "iPhone XS"];let colors = ["黑色", "白色"];let storages = ["64g", "256g"];let result = [];// 遍历names数组for (let i = 0; i < names.length; i++) { // 遍历colors数组 for (let j = 0; j < colors.length; j++) { // 遍历storages数组 for (let k = 0; k < storages.length; k++) { // 构建笛卡尔积的每一项 let spec = [ { name: names[i] }, { name: colors[j] }, { name: storages[k] } ]; // 将spec添加到结果数组中 result.push({ spec: spec }); } }}console.log(result);
运行上述代码后,result
变量将包含你期望的输出数组。
在这个示例中,我们使用三个嵌套的 for 循环来遍历 names
、colors
和 storages
数组。在每个循环中,我们构建了一个 spec
数组,其中包含了当前迭代的元素,并将 spec
添加到结果数组中。最终,结果数组将包含所有可能的笛卡尔积组合。
我正在尝试对一个后端服务器进行负载测试,并将一些配置解析到一个标签对象中。我正在尝试生成< code>Label对象的笛卡尔乘积,这将是一个< code>Metric对象。 我有一个 方法添加 我试图以迭代/递归的方式做到这一点,但它变得非常复杂和混乱。我检查了是否有java8替代方案。如果我能够获得
问题内容: 我试图解决中提到的问题这篇文章。考虑一个非负整数列表。我想要一套的笛卡尔积。例如,如果我可以使用itertools: 如果您能帮助我知道如何生成任意长度的using ,我将不胜感激。 问题答案: 您可以使用映射的所有项目来,然后解开他们:
我有以下收藏类型: 我希望根据集合中每个键的单个值为每个创建唯一的组合。
问题内容: 您将如何在JavaScript中实现多个数组的笛卡尔积? 举个例子, 应该回来 问题答案: 这是使用和提供的解决问题的功能解决方案(没有任何 可变变量 !),该提供者为:
本文向大家介绍javascript笛卡尔积算法实现方法,包括了javascript笛卡尔积算法实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript笛卡尔积算法实现方法。分享给大家供大家参考。具体分析如下: 这里可根据给的对象或者数组生成笛卡尔积 希望本文所述对大家的javascript程序设计有所帮助。
主要内容:Oracle CROSS JOIN子句简介,Oracle Cross Join示例在本教程中,您将学习如何使用Oracle 创建连接表的笛卡尔积。 Oracle CROSS JOIN子句简介 在数学中,给定两个集合和,的笛卡尔乘积是所有有序对(,)的集合,属于,属于。 要在Oracle中创建表的笛卡尔乘积,可以使用子句。 以下说明了子句的语法: 与其他连接(如或)不同,没有连接谓词的子句。 当执行两个没有关系的表的交叉连接时,将得到两个表的行和列的笛卡尔乘积。 当您想要生成大量