【问题标题】:Object manipulation: two entries to combined collection对象操作:组合集合的两个条目
【发布时间】: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


【解决方案1】:

这会对你有所帮助。

var len=2;
var Arr=[];
for(var i=1;i<=len;i++)
{
  for(var j=1;j<=len;j++)
  {
    for(var k=1;k<=len;k++)
    {
        var obj={
      keyA:"value"+i+"a",
      keyB:"value"+j+"a", 
      keyC:"value"+k+"a"
      };
      Arr.push(obj);
    }
  }
}
console.log(Arr);

https://jsfiddle.net/7h2cdfay/2/

【讨论】:

    猜你喜欢
    • 2021-04-17
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多