首页 > 解决方案 > 使用map jquery获取数组中的选项值

问题描述

$('#btnadd').click(addBulletinBoard);

function addBulletinBoard() {
  var show = $('#show').val();
  var show1;
  console.log("before " + $('#show').val())
  if (jQuery.inArray("*", show) !== -1) {
    show1 = $("select#show option").map(function() {
      return $(this).val();
    }).get();
  }
  console.log("after :" + show)
  console.log("after " + show1.splice(0, 2))
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control" name="show" id="show" multiple="">
  <option value="" selected="" disabled="">Select...</option>
  <option value="*">All</option>
  <option value="1">option 1</option>
  <option value="2">option 2</option>
</select>
<button type="button" class="btn btn-primary" id="btnadd">Submit</button>

我上面有一个演示。我想要发生的事情是从选择中选择选项并且该选项ALL在所选中。我想获得除第一个和第二个之外的所有选项。所以我使用了带有拼接的地图。但正如在控制台中看到的那样,这不是我所期望的。

如何在jquery中获取除前两个之外的选项值

标签: javascriptjqueryhtml-selectsplice

解决方案


可以简单地使用Array#filter()

$('#btnadd').click(addBulletinBoard);

function addBulletinBoard() {
  var show = $('#show').val().filter(function(val) {
    return val && val !== '*'
  });

  console.log("after :", show)

}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control" name="show" id="show" multiple="">
  <option value="" selected="" disabled="">Select...</option>
  <option value="*">All</option>
  <option value="1">option 1</option>
  <option value="2">option 2</option>
</select>
<button type="button" class="btn btn-primary" id="btnadd">Submit</button>


推荐阅读