返回的.each()问题(对象数x值)

时间:2014-09-30 14:00:05

标签: javascript jquery arrays json each

我正在努力解决使用数组填充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

我认为我的代码并不是那么好,但经过测试很多组合后,我无法在你的帮助下解决它。

感谢您对此提出任何建议。

1 个答案:

答案 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>')
        });
    });
}