【问题标题】:Create a string from selected values of mulitple multi-select boxes从多个多选框的选定值创建字符串
【发布时间】:2017-01-08 08:55:34
【问题描述】:

我遇到了从多个多选框的选定值创建字符串的问题,让我用下面的例子来解释:

假设我在 jQuery 中有如下下拉值。

country = [usa, uae, ksa, uk]
products = [animals, meat, clothes]
show-in = [value, weight]
unit= [thousands, millions, kilos, tons]

现在我想创建包含所有组合字符串的数组,例如在上述情况下:

all_string = 
[usa-animals-value-thousands,
usa-animals-value-millions,
usa-animals-value-kilos,
usa-animals-value-tons,
usa-animals-weight-thousands,
usa-animals-weight-millions,
usa-animals-weight-kilos,
usa-animals-weight-tons,
usa-meat-value-thousands,
usa-meat-value-millions,
.... and so on]

请注意,表单中的选择框数量是动态的,每个选择框可以有任意数量的用户选择的值。

到目前为止,我已经尝试了不同的方法,并且只能创建第一级的字符串,比如每个数组的每个第一个元素的字符串连接在一起。但是,我无法为每个组合递归地生成它。

我当前的代码如下,但这只是一个想法,因为到目前为止它还没有满足我的要求。

var final_data = [];
var data = [];
jQuery('.form-filter select').each(function () {
    data.push(jQuery(this).val());
});
for (var k = 0; k < data[0].length; k++) {

    var str = "";

    for (var j = 0; j < data.length; j++) {
        str += (data[j][i] !== undefined) ? "-" + data[j][i] : ((data[j][i - 1] !== undefined) ? "-" + data[j][i - 1] : "-" + data[j][i - 2]);
    }

    final_data.push(str.slice(1));
}

请帮忙..

【问题讨论】:

  • 包括你目前在 OP 中的内容
  • @guradio 编辑了我的问题,请检查。
  • 没人帮忙吗?

标签: jquery json drop-down-menu multi-select dropdown


【解决方案1】:

好的,我找到了解决问题的方法。

这个功能对我有用

function allPossibleCases(arr) {
  if (arr.length == 1) {
    return arr[0];
  } else {
    var result = [];
    var allCasesOfRest = allPossibleCases(arr.slice(1));  // recur with the rest of array
    for (var i = 0; i < allCasesOfRest.length; i++) {
      for (var j = 0; j < arr[0].length; j++) {
        result.push(arr[0][j] + allCasesOfRest[i]);
      }
    }
    return result;
  }

}

在此处找到详细信息。 Finding All Combinations of JavaScript array values

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2016-05-18
    • 2011-06-30
    • 1970-01-01
    • 2019-11-19
    • 2021-01-31
    相关资源
    最近更新 更多