数组数组的组合函数

时间:2016-06-20 09:02:28

标签: javascript node.js ecmascript-6

如果有一个配置应用程序,用户可以在其中指定多个字段来生成表单。我们还有一个将图像堆叠在一起的系统。现在我需要获得用户配置的所有可能选项。所以当我从配置中获得所有设置时,我得到了这个数组数组

[ 
  [ 'prs', 'fctr', 'fcop' ],
  [],
  [ 'standaard', 'duimgat' ],
  [],
  [],
  [],
  [],
  [],
  [],
  [ 'action barrel', 'only action' ],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  ['x', 'y'],
  [],
  [] 
]

我现在试图实现的是我从上面获得所有可能的组合。因此,对于第一个组合行,我尝试获取prs / prs_standaard / prs_duimgat / prs_standaard_action barrel / prs_standaard_only_action / prs _standaard_action barrel_x / prs_standaard_only action_x / prs_standaard_action barrel_y / prs_standaard_only barrel_y etc

空数组也可以填充数据。这可以由用户自己动态添加。所以我试着找到一个组合函数。

目前我有这个,但它无法正常工作。

_createPossibleOptionsFromStackAbleImages (stackAbleImages) {
    let result = [];

    if (stackAbleImages[0] !== undefined) {
      stackAbleImages[0].forEach((bmStockModelImages) => {
        let currentIndex = result.length;
        result.push(bmStockModelImages);
        stackAbleImages.forEach((questionStackAbleImage, index) => {
          if (index === 0) { return; }
          let currentQuestionLength = questionStackAbleImage.length;
          questionStackAbleImage.forEach((stackAbleImage) => {
            result.push(`${result[currentIndex]}_${stackAbleImage}`);
          });
          currentIndex += currentQuestionLength;
        });
      });
    }

    console.log(result);

    return result;
  }

我只需要从上到下的组合。所以我不需要x_action_barrel等。

提前致谢

2 个答案:

答案 0 :(得分:1)

我认为您可以将数据从2d数组重构为树,然后从上到下解析(^ _ ^)

               __________  root ____________
              /             |               \
          __prs           fctr__          _fcop___
         /     \         /      \        /        \
  standard  duimgat standard  duimgat  standard  duimgat
  /   \     /   \   /    \    /    \   /    \    /     \

答案 1 :(得分:0)

@Urknecht提出了使用递归的想法。所以我的最后一个代码是这个。 致@Urknecht的想法

<!-- Handles HTTP GET requests for /resources/** by efficiently serving 
    up static resources in the ${webappRoot}/resources directory -->

<resources mapping="/resources/**" location="/resources/" />