在javascript中迭代另一个无键数组中的无键数组

时间:2018-01-03 04:09:27

标签: javascript arrays api

我的API看起来像这样:

[
    [
        1,
        "__Default__"
    ],
    [
        7,
        "parent 1"
    ],
    [
        9,
        "parent 2"
    ],
    [
        17,
        "Parent 3"
    ],
    [
        18,
        "Parent 4"
    ]
]

现在我试图迭代所有这个列表的值并将其填充到select2中,但是我在迭代第二级列表时遇到了麻烦。

下面是我的代码:

var all_parent_json = $.ajax({
                type: "GET",
                url: "/api/content_parent/"+ project_data.id +"/?format=json",
                dataType: "application/json",
                async: false
            }).responseText;
            var all_parent = JSON.parse(all_parent_json);

            var parent_option_list = [];
            for (var x in all_parent){
                for (y in all_parent[x]){
                    //THIS IS WRONG
                    console.log(all_parent[x].[y])
                    console.log(y)
                parent_option_list.push({"id": all_parent[x].[0], "text": all_parent[x].[1]})
                }
            }

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

将all_parent [a]。[b]更改为all_parent [a] [b]

答案 1 :(得分:1)

我不确定是什么。用于索引之间。我认为您尝试生成的代码是这样的:

for (x in all_parent) {
    for (y in all_parent[x]){ 
        console.log(all_parent[x][y]) }}

[x]和[y]之间的句点是语法错误。所以,我认为你想建立这样的列表:

parent_option_list.push({"id": all_parent[x][0], "text": all_parent[x][1]})

答案 2 :(得分:1)

您可以轻松使用Array.map()

var parent_option_list = JSON.parse(all_parent_json).map(m => { return {id: m[0], text: m[1]}; });