Javascript 如何按升序对多维数组输出进行排序?

Javascript 如何按升序对多维数组输出进行排序?,javascript,arrays,sorting,multidimensional-array,Javascript,Arrays,Sorting,Multidimensional Array,我的代码在单击OK时生成一个二维矩阵。代码将数据存储在多维数组中,但我尝试向代码添加一个排序函数,该函数使用第4个文本框按升序重新排列代码。有没有关于我如何做到这一点的建议 HTML代码 <div class="rightDiv"> <div id = "pastcalcblock"> <h3> PAST CALCULATIONS </h3> <input type = "text" size = "1" id =

我的代码在单击OK时生成一个二维矩阵。代码将数据存储在多维数组中,但我尝试向代码添加一个排序函数,该函数使用第4个文本框按升序重新排列代码。有没有关于我如何做到这一点的建议

HTML代码

<div class="rightDiv">
<div id = "pastcalcblock"> 
    <h3> PAST CALCULATIONS </h3>
         <input type = "text" size = "1" id = "text1"/>
         <input type = "text" size = "1" id = "text2"/>
         <input type = "text" size = "1" id = "text3"/>
         <input type = "text" size = "1" id = "text4"/><br>
         <input type = "button" value = "Ok" id = "operation" onClick = "display()"/>
         <div id = "resultTab">
                SORT<br>
                    <input type = "button" value = "As Entered" id = "enteredBut">
                    <input type = "button" value = "By Result" id = "resultBut" onClick = "sort()"><br><br>
                    <div id="expressions">
                    </div>                
            </div>
        </div>

过去的计算

排序


Javascript代码

    function display()
    {
    var arrayOne =[document.getElementById('text1').value,document.getElementById('text2').value,document.getElementById('text3').value,document.getElementById('text4').value ];

      new_array=arrayOne.join(" ");
    var para = document.createElement("p");
    var t = document.createTextNode(new_array);
    para.appendChild(t)
    document.getElementById("expressions").appendChild(para);

    }



 function sort(){
            var dispArr = [document.getElementById('text1').value, 
document.getElementById('text2').value, document.getElementById('text3').value,document.getElementById('text4').value];
            var myArray = [];
             for(var i = 0 ; i < 1 ; i ++ ) {
                 myArray[i] = [];
                 for(var j = 0 ; j < 5 ; j++ )
                 {
                     myArray[i][j] = dispArr[j];
                     console.log(myArray[i][j]);
                  } 
             }


        }
函数显示()
{
var arrayOne=[document.getElementById('text1')。值,document.getElementById('text2')。值,document.getElementById('text3')。值,document.getElementById('text4')。值];
new_array=arrayOne.join(“”);
var para=document.createElement(“p”);
var t=document.createTextNode(新数组);
第3(t)段
文件.getElementById(“表达式”).appendChild(第段);
}
函数排序(){
var dispArr=[document.getElementById('text1').value,
document.getElementById('text2')。值,document.getElementById('text3')。值,document.getElementById('text4')。值];
var myArray=[];
对于(变量i=0;i<1;i++){
myArray[i]=[];
对于(var j=0;j<5;j++)
{
myArray[i][j]=dispArr[j];
log(myArray[i][j]);
} 
}
}

您最好将整个矩阵保存在一个内存变量中,并添加到该变量中。还考虑当输出被排序时,你必须知道如何回到原来的顺序,这样“AS输入”按钮仍然具有预期的效果。因此,最好有一个从头开始的显示功能,清空输出并按输入或排序的顺序复制所有数据

以下是如何做到这一点:

var矩阵=[];//所有数据的全局值
函数addExpression(){
var arrayOne=[
document.getElementById('text1')。值,
document.getElementById('text2')。值,
document.getElementById('text3')。值,
document.getElementById('text4')。值
];
//添加到矩阵
矩阵推(arrayOne);
显示(假);
}
功能显示(byResult){
//确定是否进行排序:
var matrix2=byResult?排序(矩阵):矩阵;
//显示每行:
var expressions=document.getElementById(“表达式”);
expressions.innerHTML='';//完全为空
matrix2.forEach(行=>{
var para=document.createElement(“p”);
var t=document.createTextNode(row.join(“”));
第3(t)段
表达.儿童(第7段);
});
}
函数排序(m){//创建一个副本,并按最后一列对其排序
返回m.slice().sort((a,b)=>a[3]-b[3]);
}

过去的计算

排序



myArray中单行的用途是什么:虽然有一个循环,但它只包含一行。您想对该行进行排序吗?嗯,我试图将该数组存储在另一个数组中,然后运行for循环来比较这些值。对于如何处理此问题,我感到非常困惑。但我想让它发挥作用。输入值是字符串,还是输入应该是数字?我仍然不明白你想排序什么:你只有4个值,你想按第4个值排序——这没有多大意义。你是什么意思?你知道我如何在显示的第一个文本框后添加一个符号吗?这真的是一个不同的问题。但以前有人问过。看一看,看一看。如果您在实施过程中仍然存在问题,请提出新问题。