访问JavaScript中函数返回的数组

时间:2017-12-12 13:23:24

标签: javascript function dynamic-arrays

我已获得以下代码:

$(document).ready(function() {
    var blu = getData();
    console.log(blu); //this shows full the array in the console
    console.log(blu.length); //this gives back 0

});

使用以下函数getData()

function getData() {
    var arr = [];
    var json;

    $.ajax({
        url: "someurl.com",
        dataType: 'json',
        data: json,
        success: function(json) {
            var x = json.somejson.somenumericvalue //gets the amount of dataentries
            for (i = 0; i <= x - 1; i++) {
                arr.push(json.feeds[i].field1); // fill up array with the values from the json feed
            }
        } //end of success function
    }); //end of ajax
    console.log(arr.length) //shows the correct length of the array
    return arr;
} //end of function getData

问题是我想访问值并使用函数中填充的数组执行方法(如.length),但它在某种程度上不起作用。有人可以帮忙吗? 干杯。

3 个答案:

答案 0 :(得分:0)

您可以使用$ .each或for in循环

E.g。

$.each(Blu, function (i, v){//do whatever with array values, i: index, v: value}

或者

For(i in Blu){//i: index, access your value by Blu[I] & do whatever with your value}

希望它会帮助你

答案 1 :(得分:0)

目前尚不清楚你的json是什么样的,你可能需要遍历它。假设您想要遍历json.feeds:

function getData(){
    var arr = [];
    var json;
    $.ajax({
        url: "someurl.com",
        dataType: 'json',
        data: json,
        success: function(json){
            for(var i in json.feeds) {
                arr.push(json.feeds[i].field1); // fill up array with the values from the json feed
            }
            console.log(arr.length)//shows the correct length of the array
            return arr;
        }    //end of success function
    });  //end of ajax
}//end of function getData

还要注意console.log和return的位置。我建议阅读一本关于javascript的基本书,特别是闭包和变量范围。这就是为什么你的代码不起作用,问题不在于ajax,json或对象迭代。

答案 2 :(得分:0)

如果ajax调用返回的json数据是命名数组,则必须通过对象表示法访问它。要检索此类数据对象的长度,请使用:

Object.keys(data.datanode).length