【问题标题】:Matrix possibilities in JavaScriptJavaScript 中的矩阵可能性
【发布时间】:2018-12-26 08:55:42
【问题描述】:

你好

正如您在下面的要点中看到的,我在一个对象或数组中有 03 个不同的属性(我可以使用其中任何一个作为输入),我必须发现它们之间组合的所有可能性。

在这种情况下,我们只有 03 个属性,但我们可以轻松拥有 20 多个道具...

我怎样才能以一种聪明的方式实现这一点?考虑更多的数据...

https://gist.github.com/matheus-rossi/c0261d1d8e138475c049f500fb2616fa

const configPossibilities = [ [ 1 ], [ 1, 2 ], [ 1, 2, 3, 4 ] ] 

const configPossibilities2 = {
 ID_LINHA: [ 1 ],
 ID_IMPLEMENTO: [ 1 , 2 ],
 ID_COMPOSICAO: [ 1 , 2 , 3 , 4 ]
} 

const desiredResult = [
  [1, 1, 1 ],
  [1, 1, 2 ],
  [1, 1, 3 ],
  [1, 1, 4 ],
  [1, 2, 1 ],
  [1, 2, 2 ],
  [1, 2, 3 ],
  [1, 1, 4 ],
]

【问题讨论】:

  • 使用 json 可能吗?不太清楚你所说的“智能方式”是什么意思
  • 我需要计算以该数组为参数的所有可能性,我无法在 JSON 中手动安装它,因为我的真实案例有超过 20 种可能性

标签: javascript node.js matrix statistics reduce


【解决方案1】:
  function getPossibilities(obj){
    return cartesian(...Object.values(obj))
  }

  function cartesian() {
    var r = [], arg = arguments, max = arg.length-1
    function helper(arr, i) {
      for (var j=0, l=arg[i].length; j<l; j++) {
        var a = arr.slice(0)
        a.push(arg[i][j])
        if (i==max) {
          r.push(a)
        }
        else {
          helper(a, i+1)
        }
      }
    }
    helper([], 0)
    return r
  }

  const desiredResult = getPossibilities(configPossibilities2)

【讨论】:

    猜你喜欢
    • 2020-11-18
    • 1970-01-01
    • 2016-07-14
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 2017-12-01
    • 2017-07-05
    相关资源
    最近更新 更多