Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js循环和JSON构建_Javascript_Jquery_Json_Node.js_Parsing - Fatal编程技术网

Javascript Node.js循环和JSON构建

Javascript Node.js循环和JSON构建,javascript,jquery,json,node.js,parsing,Javascript,Jquery,Json,Node.js,Parsing,尊敬的ppl 这是我的node.js代码。。。 我正在尝试解析我们考试结果的数据…示例。。。 我得到的结果…我正在穿越过去似乎太。。。 所有的工作,但穿越回来发生在随机。。。可能是循环出了问题 json.results = []; var output = ''; var k = response.query.results.body.div.div[0].table[1].tr.length;

尊敬的ppl

这是我的node.js代码。。。

我正在尝试解析我们考试结果的数据…示例。。。

我得到的结果…我正在穿越过去似乎太。。。 所有的工作,但穿越回来发生在随机。。。可能是循环出了问题

            json.results = [];

            var output = '';

            var k = response.query.results.body.div.div[0].table[1].tr.length;

            for (var j = 1; j < k; j++) {

                for (var i = 0; i <= 5; i++) {
                    var result_obj = {};
                    result_obj.subjects = [];

                    for (key in response.query.results.body.div.div[0].table[1].tr[j].td[i]) {
                        if (typeof response.query.results.body.div.div[0].table[1].tr[j].td[i].em === "undefined") {
                            continue;
                        }

                        var subject_obj = {};

                        output += "Subject : " + response.query.results.body.div.div[0].table[1].tr[j].td[i].em + " " + "\n";

                        var subtext = response.query.results.body.div.div[0].table[1].tr[j].td[i].em + " " + "\n";
                        subject_obj.subjectname = subtext.replace(/[(].*[)]/, "").trim();

                        result_obj.subjects.push(subject_obj);
                        console.log(subject_obj);
                        break;

                    }

                    console.log(result_obj.subjects);
json.results=[];
var输出=“”;
var k=response.query.results.body.div.div[0]。表[1]。tr.length;
对于(var j=1;j
当您在代码中发出HTTP请求(请参见下面的一行)时,您会给响应的执行顺序带来不同的延迟

new YQL.exec(queryname, function (response) {
您需要自己跟踪请求的顺序,或者使用一个库来完成

自己编写代码 为了避免这种情况,您需要跟踪请求的原始顺序。由于闭包的工作方式,您不能只增加一个简单的计数器,因为它会随着循环的进行在全局范围内发生变化。解决这一问题的惯用方法是将计数器传递到立即执行的函数中(作为值类型)

e、 g

var responseData=[];
对于(变量i=0;i<100;i++){
(功能(){
...
//http调用在这里的某个地方
responseData[i]=来自此响应的数据
...
})(一)
}
使用图书馆 在Caolan的优秀库中查看
async.parallel()
调用。您向它传递一个函数数组,它将返回到回调函数,并返回一个结果数组

您需要创建一个循环,用包含适当变量的函数版本填充数组。

(我将回答排序部分。建议将JSON问题作为一个单独的问题,以适应Q&a格式。)

当您在代码中发出HTTP请求(请参见下面的一行)时,您会给响应的执行顺序带来不同的延迟

new YQL.exec(queryname, function (response) {
您需要自己跟踪请求的顺序,或者使用一个库来完成

自己编写代码 为了避免这种情况,您需要跟踪请求的原始顺序。由于闭包的工作方式,您不能只增加一个简单的计数器,因为它会随着循环的进行在全局范围内发生变化。解决这一问题的惯用方法是将计数器传递到立即执行的函数中(作为值类型)

e、 g

var responseData=[];
对于(变量i=0;i<100;i++){
(功能(){
...
//http调用在这里的某个地方
responseData[i]=来自此响应的数据
...
})(一)
}
使用图书馆 在Caolan的优秀库中查看
async.parallel()
调用。您向它传递一个函数数组,它将返回到回调函数,并返回一个结果数组


您需要创建一个循环,用包含适当变量的函数版本填充数组。

Thanx非常感谢有价值的响应……我确实有类似的感觉……您解释得很好……我将检查async.parallel()现在…祝你有一个美好的一天…事实上,再想想
async.map()
可能更合适,并导致更简单的codeThnax先生…我尝试过…但仍然不起作用…我刚开始实现这些概念…我想我遇到了一些语义错误…我也尝试过使用map和parallel…请帮助我如何实现它…我已经尝试了很多天了…这是我的github中的最新代码…感谢您提供关于第三个循环的提示…正如您现在看到的…我已经改进了很多清洁度…我甚至尝试实现了这个…但问题仍然存在…Thanx非常感谢您的宝贵响应…我对类似的行文有感觉…您解释得很好…我将作为现在是ync.parallel()。祝你今天过得愉快……事实上,再想想
async.map()
可能更合适,并导致更简单的codeThnax先生…我尝试过…但仍然不起作用…我刚开始实现这些概念…我想我遇到了一些语义错误…我也尝试过使用map和parallel…请帮助我如何实现它…我已经尝试了很多天了…这是我的github中的最新代码…感谢您提供关于第三个循环的提示…正如您现在看到的…我已经改进了很多清洁度…我甚至尝试实现了这一点…但问题仍然存在。。。