Jquery 将选择器的结果分组到数组的数组中

Jquery group result of a selector in an array of array

我的网页上有一个随机数 select multiple,当用户单击发送按钮时,我通过它们的 class 检索这些 select multiple 的值。我也使用了选择的插件,但我认为它不会干扰我即将揭露的问题。这是我的代码的样子:

<select multiple="multiple" id="idName0" class="idName chosenSelect">
  <option value="...">...</option>...
</select>
<select multiple="multiple" id="idName1" class="idName chosenSelect">
  <option value="...">...</option>...
</select>

并得到结果:

results.push($(".idName").map(function(){return $(this).val();}).get());

假设我在第一个 select 中选择了 2 option(使用 value foo 和 bar),在第二个中选择了一个(使用 value foobar)。所有这些都给我一个 array 看起来像:

[foo,bar,foobar]

我想要的是:

[[foo,bar],[foobar]]

据我所知,当您在指向 select multiple 的选择器上调用 .val() 时,会为您提供一个包含不同所选 option 的数组。在这里,由于存在多个 select multiple,我希望创建一个包含这些数组的数组。

欢迎任何帮助。

您可以为此使用 map(),但您还需要将每个 select 的值包装在数组中。如果您不希望 null 在数组中用于空选择,您可以在 .get()

之后添加 .filter(Boolean)

$('select').change(function() {
  var data = $("select").map(function() {
    return [$(this).val()]
  }).get()

  console.log(data)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select multiple="multiple" id="idName0" class="idName chosenSelect">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>
<select multiple="multiple" id="idName1" class="idName chosenSelect">
  <option value="4">4</option>
</select>