如何使用多个值迭代数组

时间:2017-09-26 11:22:40

标签: jquery arrays object for-loop push

我试图填充数组中的选择框。我需要将值与文本不同。

到目前为止,这段代码正常工作,因为我得到了正确的值:

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

但是,我无法通过谷歌找出或找到,如何通过这些来迭代这些并获得价值。

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

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

这导致[object Object]

任何能够指导我正确方向的人都会非常感激。

2 个答案:

答案 0 :(得分:0)

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

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(''));

答案 1 :(得分:0)

使用 价值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');
    }