Javascript数组参数不存在';行不通

Javascript数组参数不存在';行不通,javascript,arrays,function,Javascript,Arrays,Function,我有一个javascript代码,在对值进行排序后,用HTML为表生成值。首先,我在javascript代码的开头手动输入值数组。就像:名字=[汤姆,杰瑞,米奇,老鼠];等级=[10,20,30,40];然后对它们进行排序,并在表中写入值。它工作得很好 grades=[10,20,30,40]; var swapped; do { swapped = false; for (var i=0; i < grades.length

我有一个javascript代码,在对值进行排序后,用HTML为表生成值。首先,我在javascript代码的开头手动输入值数组。就像:名字=[汤姆,杰瑞,米奇,老鼠];等级=[10,20,30,40];然后对它们进行排序,并在表中写入值。它工作得很好

grades=[10,20,30,40];
var swapped;
        do {
            swapped = false;
            for (var i=0; i < grades.length-1; i++) {
                if (grades[i] > grades[i+1]) {
                    var temp = grades[i];
                    grades[i] = grades[i+1];
                    grades[i+1] = temp;
                    swapped = true;
                }
            }
        } while (swapped);
    for(j=0;j<grades.length-1;j++)
    myTable.rows[j].cells[1].innerHTML = grades[i-1];
    }
但它不起作用。桌子是空的。有什么问题

谢谢

桌子是空的。有什么问题

我们不知道,尤其是你刚才说的“那部分工作得很好”

问题是,即使在像这样调用函数之后,数组也不会像以前那样具有相同的值

当然,您已经交换了它们中的值:-)如果您不想修改最初传递的数组,则必须先复制它们。为此,您可以使用:

function table(names,grades,table){
    var swapped;
    names = names.slice();
    grades = grades.slice();
    do {
        swapped = false;
        for (var i=0; i < grades.length-1; i++) {
            if (grades[i] > grades[i+1]) {
                var temp = grades[i];
                grades[i] = grades[i+1];
                grades[i+1] = temp;
                swapped = true;
            }
        }
    } while (swapped);
    for (var j=0; j<grades.length; j++)
//       ^^^                     ^^
        table.rows[j].cells[1].innerHTML = grades[j];
//                                               ^^^
}

table(["tom","jerry","mickey","mouse"], [10,20,30,40], myTable);
功能表(名称、等级、表格){
var互换;
names=names.slice();
grades=grades.slice();
做{
交换=假;
对于(变量i=0;i等级[i+1]){
var temp=等级[i];
等级[i]=等级[i+1];
等级[i+1]=温度;
交换=真;
}
}
}while(交换);

for(var j=0;jI很久没有看到
do..while
循环了。你的问题让我想起了我的
重复..直到
天的Pascal…psst!有任何错误消息/你能提供一个吗?看看控制台有什么错误?提示:-)底部部分工作正常,所以不要介意对表部分进行排序和写入。唯一的问题是,当我在开始时手动写入数组时,它工作了,但现在即使我使用相同的数组调用函数,它也不工作。@user3179249:请发帖子,告诉我们您是如何调用函数的(从哪里?何时?)。可能还会创建一个演示问题的示例。我不会撒谎,我很久没有看到do-while循环了,以至于输出循环对我来说就像一团乱七八糟的代码。+1用于指出
I
问题。这可能是实际的问题。do-while循环没有问题-bubblesort工作正常:-)是的,它工作正常。我只是一时糊涂,因为我刚刚在学习JavaScript循环,所以还没见过它。这是一个很好的例子,说明了如何/为什么使用它。
table([tom,jerry,mickey,mouse],[10,20,30,40]);
function table(names,grades,table){
    var swapped;
    names = names.slice();
    grades = grades.slice();
    do {
        swapped = false;
        for (var i=0; i < grades.length-1; i++) {
            if (grades[i] > grades[i+1]) {
                var temp = grades[i];
                grades[i] = grades[i+1];
                grades[i+1] = temp;
                swapped = true;
            }
        }
    } while (swapped);
    for (var j=0; j<grades.length; j++)
//       ^^^                     ^^
        table.rows[j].cells[1].innerHTML = grades[j];
//                                               ^^^
}

table(["tom","jerry","mickey","mouse"], [10,20,30,40], myTable);