我正在努力解决使用数组填充DropDown菜单的问题。
我的数组存储在外部json文件中,格式如下:
[{"name":"value_A", "other":"value_A1"}, {"name":"value_B1"}, {"name":"value_C"} ]
为了使用这些数据,我首先将它们推入一个数组,然后尝试在下拉菜单中推送它们。 我的jQuery看起来像傻瓜:
function loadData() {
$.getJSON(database, function (data) {
for(var i=0; i<data.length; i++) {
myNewArray.push(
{
"name":data[i].name
})
$.each(data, function(i, item) {
$("#myDiv").append('<option>' + data[i].name + '</option>')
});
};
});
}
当数据进入我的下拉菜单时,它工作“很好”,但它将所有数据迭代为相同数量的对象。
例如,我在我的数组中有10个objets,它返回10倍的全部值 如何在查询传递选定的
之后“停止”迭代[{"name":"value_A", "other":"value_A1"}, {"name":"value_B"}, {"name":"value_C"} ]
将在控制台中返回:
value_A value_B value_C value_A value_B value_C value_A value_B value_C
我认为我的代码并不是那么好,但经过测试很多组合后,我无法在你的帮助下解决它。
感谢您对此提出任何建议。
答案 0 :(得分:2)
$.each()
循环中有一个for
,因此会创建一个双重迭代,导致多次添加相同的元素。
只需要$.each()
或for
循环中的一个
function loadData() {
$.getJSON(database, function (data) {
$.each(data, function (i, item) {
myNewArray.push({
"name": item.name
})
$("#myDiv").append('<option>' + item.name + '</option>')
});
});
}