Javascript 循环通过并以“value1”、“value2”、“value3”的格式构建数组

Javascript 循环通过并以“value1”、“value2”、“value3”的格式构建数组,javascript,jquery,autocomplete,Javascript,Jquery,Autocomplete,我想知道是否有人能建议使用jQuery遍历元素中的所有s并构建数组的最佳方法 例如 而不是将字符串ins传递给autoCompleteArray $("#CityLocal").autocompleteArray( [ "Aberdeen", "Ada", "Adamsville", "Zoar" //and a million other cities... ], { delay:10,

我想知道是否有人能建议使用jQuery遍历元素中的所有s并构建数组的最佳方法

例如

而不是将字符串ins传递给autoCompleteArray

$("#CityLocal").autocompleteArray(
        [
            "Aberdeen", "Ada", "Adamsville", "Zoar" //and a million other cities...
        ],
        {
            delay:10,
            minChars:1,
            matchSubset:1,
            onItemSelect:selectItem,
            onFindValue:findValue,
            autoFill:true,
            maxItemsToShow:10
        }
    );
…我需要循环一个数组中的所有变量,并将它们放入一个数组中,然后将该数组变量传递给函数,而不是一个长字符串

例如

如果您能建议如何以正确的格式将内容推入数组,我将不胜感激。我几乎已经使用了这个网站上另一篇文章中的循环部分

谢谢。

这应该可以:

$(document).ready(function(){
  // array of option elements' values
  var optionValues = [];
  // array of option elements' text
  var optionTexts = [];

  // iterate through all option elements
  $('#sel > option').each(function() {
    // get value/text and push it into respective array
    optionValues.push($(this).val());
    optionTexts.push($(this).text());
  });

  // test with alert
  alert(optionValues);
  alert(optionTexts);
});
假设您的select元素具有ID sel。

该函数可能就是您正在寻找的。下面的代码将创建一个数组,其中包含选项的所有值或文本值


您所需要做的就是将数组作为第一个参数传递,而不带括号。方括号创建一个新数组,但您不需要这样做,因为您已经传递了一个数组。只要做:

$("#CityLocal").autocompleteArray(
                MyBigArrayOfOptions,
                {
                        delay:10,
                        minChars:1,
                        matchSubset:1,
                        onItemSelect:selectItem,
                        onFindValue:findValue,
                        autoFill:true,
                        maxItemsToShow:10
                }
        );

如果我正确理解了您的问题,以下代码应该满足您的需要:

myFunction($("#my-select option"));
查询的输出已经是一个选项数组,这些选项是select的后代,因此不需要将它们推送到另一个数组中。或者,如果您的select没有id,但有DOM元素:

myFunction($("option", theSelect));
将此想法插回到您的代码中:

$("#CityLocal").autocompleteArray(
    $("option", theSelect),
    {
            delay:10,
            minChars:1,
            matchSubset:1,
            onItemSelect:selectItem,
            onFindValue:findValue,
            autoFill:true,
            maxItemsToShow:10
    }
);

对不起,我看不出这个特定的示例是如何工作的。$my select选项如何生成所需格式的数组?您将如何仅为所选项目筛选该数组?在.each循环中:if this.selected{//code for push}
myFunction($("option", theSelect));
$("#CityLocal").autocompleteArray(
    $("option", theSelect),
    {
            delay:10,
            minChars:1,
            matchSubset:1,
            onItemSelect:selectItem,
            onFindValue:findValue,
            autoFill:true,
            maxItemsToShow:10
    }
);