【发布时间】:2023-03-08 20:50:02
【问题描述】:
您将采取什么过程将具有 3 个键/值对的对象数组转换为包含所有键/值对组合的对象组合数组? ...数组可以是任意大小。
例子:
var input = [
{keyA: "value1a", keyB: "value1b", keyC: "value1c"},
[keyA: "value2a", keyB: "value2b", keyC: "value2c"}
];
转换为:
var output = [
{keyA: "value1a", keyB: "value1b", keyC: "value1c"},
{keyA: "value1a", keyB: "value1b", keyC: "value2c"},
{keyA: "value1a", keyB: "value2b", keyC: "value1c"},
{keyA: "value1a", keyB: "value2b", keyC: "value2c"},
{keyA: "value2a", keyB: "value1b", keyC: "value1c"},
{keyA: "value2a", keyB: "value1b", keyC: "value2c"},
{keyA: "value2a", keyB: "value2b", keyC: "value1c"},
{keyA: "value2a", keyB: "value2b", keyC: "value2c"},
// etc.
];
我不是 100% 确定如何处理它,就数组而言,我知道使用 3 个数组我会做 3 个嵌套循环 concat 或推入单个数组。但是,对于对象,我正在绘制空白。我可以将每个属性中的每个值推送到它们自己的数组中,并使用嵌套循环对每个值进行迭代,但相信有更好的方法。
目前,我与上面提到的完全一样。
let a = [];
let b = [];
let c = [];
inputs.forEach(input => {
a.push(input.key1);
b.push(input.key2);
c.push(input.key3);
});
let output = [];
a.forEach(x => {
b.forEach(y => {
c.forEach(z => {
let result = {};
result.a = x;
result.b = y;
result.c = z;
output.push(result);
});
});
});
但必须想象有一个更好的方法,我无法指望。
【问题讨论】:
-
添加了当前的方法。
标签: javascript object