Javascript 获取数组或JSON中select的选项值列表,而不使用循环或jQuery

Javascript 获取数组或JSON中select的选项值列表,而不使用循环或jQuery,javascript,jquery,json,Javascript,Jquery,Json,我需要数组或JSON中的选项值列表。 我使用了以下代码 var compArray=[]; jQuery("#myCombo option").each(function(){ compArray.push(jQuery(this).val()); }); 但是我不想在循环中迭代选项,因为我的选项列表可能会增长。 我用过 JSON.stringify(document.getElementById("myCombo").options) 但在stringify上,

我需要数组或JSON中的选项值列表。 我使用了以下代码

var compArray=[];
jQuery("#myCombo option").each(function(){
       compArray.push(jQuery(this).val());
       });
但是我不想在循环中迭代选项,因为我的选项列表可能会增长。 我用过

JSON.stringify(document.getElementById("myCombo").options)
但在stringify上,它显示空的JSON对象,尽管我可以从中获得值

document.getElementById("myCombo").options[0].value
我必须将请求参数中的这些值传递给服务器,我不想通过循环。 请推荐优化的解决方案。

但我不想循环迭代选项,因为我的选项列表可能会增加

这与组合没有任何关系

无论何时向组合添加/删除选项,只需调用一个函数,该函数随后将从数组中添加/删除该选项

function addDeleteListInArray( oVal, addDelete ) {
   if( addDelete ) {
       // add to array
       compArray.push( oVal );
   } else {
       // delete from array
       for( var i=0; i< compArray.length; i++ ) {
          if( compArray[ i ] == oVal ) {
              compArray.splice( i, 1 );
              break;
          }
       }
   }
}

希望这有帮助。

您可以使用如下自定义序列化程序:

var options = Array.prototype.slice.call(document.getElementById("sel").options),
    str = JSON.stringify(options, function(key, value){
       if(key === ""){
           return value;   
       }
       if(!isNaN(parseInt(key))) {
          return value.value;   
       }
    };
或者使用迭代,而不为每个选项创建jQuery实例

var options = Array.prototype.slice.call(document.getElementById("sel").options),
    str = JSON.stringify(options.map(function(item){return item.value;}));

检查此性能测试:

您好,谢谢您的建议,但我的选项列表是动态的,选项的顺序可以更改,因此仅在最终提交时,我可以迭代选项。@sahihai-请参阅我的函数。它接受两个参数-oVal和addDelete。addDelete是一个标志0/1,指示是添加还是删除。椭圆是您添加/删除的选项的值。每次在列表中添加/删除时调用此函数。是否确定此函数是一个瓶颈?我怀疑你不需要循环就可以做到,因为select.options[I]是HTMLOptionElement,它引用了其父元素等等。。。只是不要为每个选项创建jQuery实例。Array.prototype.slice.calldocument.getElementByIdmyCombo.options.mapfunction项{return item.value;}嗨,我不确定每个函数的影响,但我必须管理总体性能。由于存在无响应的脚本error.Wow,循环将降低性能。您在select中有多少个选项?您好,这是针对产品需求,我正在开发一个产品,在该产品中,用户可以设计没有任何控件的表单,show control count是select中的选项计数。所以我对此无能为力。嗨,它在IE8中不起作用,错误抛出如下。JScript对象expected.IE8不支持Array.prototype.map。你可以使用一个垫片,它在Array.prototype.slice.calldocument.getElementByIdsel.options上显示脚本错误。谢谢,伙计,测试3在每个浏览器中都显示了更好的结果,我将使用那个。