访问JavaScript中函数返回的数组



我有以下代码:

$(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

问题是,我想用填充在功能中的数组访问值并执行方法(例如.engength),但它以某种方式行不通。有人可以帮忙吗?干杯。

您可以使用$。

,例如

$.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}

希望它能帮助您

如果AJAX调用返回的JSON数据,则必须通过对象符号访问该数据,如果它是命名数组。检索此类数据对象的长度:

Object.keys(data.datanode).length

尚不清楚您的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和返回的位置。我建议阅读有关JavaScript,特别是关闭和可变范围的基本书籍。这就是为什么您的代码不起作用,并且问题不在AJAX,JSON或对象迭代中。

相关内容

  • 没有找到相关文章

最新更新