嵌套for循环的问题

时间:2014-11-01 21:34:45

标签: javascript json

我在根据for循环中的值向对象添加属性和值时遇到问题。这是我的代码。

"use strict";

var chirper = {};
chirper.tweetsArray = [];
chirper.tweets = [];
chirper.friends = [];
chirper.friendsByName = [];



chirper.masterAjax = function (url, method, success, error, data) {
    var request = new XMLHttpRequest();
    request.open(method, url);
    request.onload = function () {
        if (this.status >= 200 && this.status < 400) {
            if (success && typeof (success) == 'function') {
                success(this.response, this.status);
            }
        }
        else {
            if (error && typeof (error) == 'function') {
                error(this.response, this.status)
            }
        }
    };
    request.onerror = function () {
        if (error && typeof (error) == 'function') {
            error(this.response, this.status);
        }
    };

    if (data) {
        request.send(JSON.stringify(data));
    }
    else {
        request.send();
    }
    };

这是我一次又一次使用的功能,具体取决于我需要获取或发布信息的位置。

chirper.getAllFriends = function ()  {
    chirper.masterAjax('https://example-name.example.com/ccchirper/friends/.json', 'GET', function (response) {
        var data = JSON.parse(response); for (var i in data) { chirper.friends.push(data[i]); chirper.friendsByName.push(data[i].userName)};
    }, function (response, status) {
        alert('Status: ' + status + '. Error message: ' + response);
    });
};




chirper.getAllTweets = function () {
    for (var i in chirper.friendsByName){
        chirper.masterAjax('https://' + chirper.friendsByName[i] + '.example.com/ccchirper/tweets/.json', 
            'GET', 
            function (response) {
                var data = JSON.parse(response); 
                for (var j in data) { data[j].name = chirper.friendsByName[i]; chirper.tweetsArray.push(data[j]);
                };
            }, 
            function (response, status) {
                alert('Status: ' + status + '. Error message: ' + response);
            });
    };

}

我一直在从控制台调用这些函数来测试它们。

我首先致电chirper.getAllFriends()填充chirper.friendsByName。它返回的一个例子是['andy','bob','john','tom']

返回后,我致电chirper.getAllTweets()填充chirper.tweetsArray

然后我调用chirper.tweetsArray并返回一个对象数组[obj,obj,obj]

这些对象中的每一个都是

obj
    text: "blah blah blah'
    image:  "url.goes.here.com"
    time: 124223534346
    name: tom

每个对象都有正确的属性和值,但name属性始终获取chirper.friendsByName数组中姓氏的值。

我想要发生的是来自&#39; andy&#39;应该得到名字&#39; andy&#39;,所有来自&#39; bob&#39;应该得到这个名字&#39; bob&#39;等

0 个答案:

没有答案