0

在我开始之前,请不要问我为什么要在 javascript 中这样做,只要知道我需要这样做,如果它让你感觉更好,我只是想这样做。

所以,假设我有一个数组(这个数字是任意的,实际应用程序将在 300 或更多,但是,我选择它是因为它是一个奇数)一个数组中有 19 个索引,我想,​​例如,使用两个异步循环将这些索引以完全相同的顺序放入另一个数组中(我知道这可以简单地通过arrayOne = arrayTwo;我只是在这个例子中使用数组来完成。

我如何保证放入第二个数组的值顺序正确?也就是说,这样做的逻辑或总体思路是什么?(也欢迎代码示例,如果需要,我也可以自由使用 jquery。)

停止或暂停以等待一个循环完成当然与使用异步循环相反,因为它们将同时工作以更快地处理此任务。

这是一个 JSfiddle,它在当前状态下不起作用,但显示了我正在谈论的基本概念(如果您将其从 jsfiddle 中取出并将其放入真正的 .js 文件中,可能会起作用)我很确定此代码显示了如何构造循环并检查两个循环何时完成,但我不知道如何确保它们以正确的顺序放置变量。

我很可能没有很好地解释我自己,如果没有回复,我打算在几个小时内修改和编辑这个问题。如果您需要更多详细信息,请在评论中询问我,我将尝试详细说明我的意思。谢谢。

4

1 回答 1

0

一个明显的解决方案是将原始数组中的项目映射到存储原始索引的包装器中,然后在一切完成后,根据存储的索引对结果数组进行排序并解包数据。

arrayOne = ["#1", "#2", "#3", "#4", "#5", "#6", "#7", "#8", "#9", "#10", "#11", "#12", "#13", "#14", "#15", "#16", "#17", "#18", "#19"];

var wrapped = arrayOne.map( function(v, i){
    return {
        data: v,
        index: i
    }
});

...

if(loopOneDone && loopTwoDone){
    //Unwrap

    var unwrapped = arrayTwo.sort(function(a, b){
        return a.index - b.index;
    }).map( function(v) {
        return v.data;
    });


    for (i=0;i<unwrapped.length;i++){
        document.getElementById("p1").innerHTML= unwrapped[i] + "<br />" ;   
    }    
    console.log('All done!');

    //Code ends here
}
于 2013-06-10T20:49:49.037 回答