【问题标题】:How to iterate over array with multiple values如何遍历具有多个值的数组
【发布时间】:2018-03-07 14:22:30
【问题描述】:

我正在尝试从数组中填充选择框。我需要该值与文本不同。

到目前为止,这段代码正在运行,因为我得到了正确的值:

var myArray = [];
$('#ctl00_ContentPlaceHolderBody_labelTider > div').each(function () {
    myArray.push({
        content: $(this).find('th').text(),
        id: $(this).attr('id')
    });
});
console.log(myArray);

但是,我无法通过 Google 弄清楚或找到如何遍历这些并获取值。

for(arr = 0; arr < myArray.length; arr++) {

    jQuery('<option/>', {
        value: myArray[arr],
        text: myArray[arr]
    }).appendTo('.selectLocation');
}

这导致[object Object]

任何能够指导我正确方向的人将不胜感激。

【问题讨论】:

    标签: jquery arrays object for-loop push


    【解决方案1】:

    问题是因为您将整个对象设置为属性值,而不是该对象的相关属性。试试这个:

    for(arr = 0; arr < myArray.length; arr++){
      jQuery('<option/>', {
        value: myArray[arr].content,
        text: myArray[arr].id
      }).appendTo('.selectLocation');
    }
    

    请注意,您可以通过使用map() 创建一个包含 HTML 字符串的数组,然后在追加时将它们一起使用 join() 来使代码更加简洁:

    var html = $('#ctl00_ContentPlaceHolderBody_labelTider > div').map(function() {
      return `<option value="${this.id}">${$(this).find('th').text()}</option>`;
    }).get();
    $('.selectLocation').append(html.join(''));
    

    【讨论】:

      【解决方案2】:

      使用 value: myArray[arr].content 为价值 和 value: myArray[arr].id 因为您的 myArray 是对象数组。

      for(arr = 0; arr < myArray.length; arr++){
      
              jQuery('<option/>', {
              value: myArray[arr].content,
              text: myArray[arr].id
                  }).appendTo('.selectLocation');
          }
      

      【讨论】:

        猜你喜欢
        • 2016-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-26
        • 2016-07-21
        • 2013-06-23
        • 2023-04-05
        • 2018-03-17
        相关资源
        最近更新 更多