Javascript 从多维数组中删除具有0的行

Javascript 从多维数组中删除具有0的行,javascript,Javascript,我有两组数组,它们被连接在一起,使之成为二维的。我喜欢做的是删除任何在连接后价格为0的行,然后排序并在html表中显示 var desc = new Array(); var desc = ["Water","Heating","Electric","Gas"]; var price = new Array(); var price=["824","325","0","245"]; var sortdesc; var sortdesc = ne

我有两组数组,它们被连接在一起,使之成为二维的。我喜欢做的是删除任何在连接后价格为0的行,然后排序并在html表中显示

    var desc = new Array();
    var desc = ["Water","Heating","Electric","Gas"];

    var price = new Array();
    var price=["824","325","0","245"];

    var sortdesc;
    var sortdesc = new Array (2);

    for (i = 0; i < desc . length; ++ i)
    {   
      for (var i=0; i < price.length; i++)
        {
                    sortdesc[i] = Array(desc[i], price[i]);
                    if (price[i] == 0 )  
                     {       
                     sortdesc.splice(i,1);

                  }  
              }
     }


    sortdesc.sort(function(a,b){ return b[1] - a[1]; });

    function sortedtable (array)
    {

        document . write("<table  border>");
        var row;
        for (row = 0; row < array . length; ++ row)
        {
        document . write(" <tr>");
        var col;
        for (col = 0; col < array [row].length; ++ col)
            document . write("  <td>" + array [row] [col] + "</td>");
        document . write(" </tr>");

        }

        document.write("</table>");
    }

    sortedtable(sortdesc);
var desc=new Array();
var desc=[“水”、“热”、“电”、“气”];
var price=新数组();
风险值价格=[“824”、“325”、“0”、“245”];
var-sortdesc;
var sortdesc=新数组(2);
对于(i=0;i
问题是我认为.splice()会重新构造数组我做错了什么? 还有更好的方法吗

我看到了另一个问题,但他们都说使用.splice()而不是delete.array[element],但是.splice对我不起作用


请原谅我的代码初学者。

splice
成功地从数组中删除了该项,但在下一个循环回合中,您将再次分配给
sortdesc[i]
,因此删除的索引将保持
未定义的状态-您创建了一个稀疏数组

除此之外,使用相同count变量的嵌套循环还有一个大问题。至少由于
price.length>=desc.length
,它不会以无限循环结束,但构造是非常值得怀疑的

要解决您的问题,只需使用
push()
将新元素添加到
sortdesc
数组的末尾(并且仅当您确实想要添加新元素时):

//无需双重初始化
var desc=[“水”、“热”、“电”、“气”];
风险值价格=[“824”、“325”、“0”、“245”];
//数组构造函数不接受维度。这里只需要一个空数组
var sortdesc=[];
//…要使用其他数组填充它,请执行以下操作:
对于(变量i=0,l=Math.min(描述长度,价格长度);i
简短回答-您不需要从阵列中拼接/删除,只需事先进行检查,如果价格为零,则不要添加项目

另一个快速评论-从您的数据来看,desc和price数组的长度似乎相同。在这种情况下,您可以只使用一个for循环,而无需迭代这两个for循环

工作代码:

var desc = ["Water","Heating","Electric","Gas"];

var price = ["824","325","0","245"];

var sortdesc = [];

// Presuming both arrays with be the same length
for (i = 0; i < desc.length; ++ i) {
    if(price[i] !== "0") {
        sortdesc.push([desc[i], price[i]]);
    }
}

sortdesc.sort(function(a,b){ return b[1] - a[1]; });

function sortedtable (array)
{

    document . write("<table  border>");
    for (row = 0; row < array.length; ++ row)
    {
        document . write(" <tr>");
        for (col = 0; col < array[row].length; ++ col)
            document . write("  <td>" + array [row] [col] + "</td>");
        document . write(" </tr>");
    }

    document.write("</table>");
}

sortedtable(sortdesc);
var desc=[“水”、“热”、“电”、“气”];
风险值价格=[“824”、“325”、“0”、“245”];
var sortdesc=[];
//假定具有相同长度的两个数组
对于(i=0;i
我喜欢Math.min(desc.length,price.length)…谢谢你的帮助
var desc = ["Water","Heating","Electric","Gas"];

var price = ["824","325","0","245"];

var sortdesc = [];

// Presuming both arrays with be the same length
for (i = 0; i < desc.length; ++ i) {
    if(price[i] !== "0") {
        sortdesc.push([desc[i], price[i]]);
    }
}

sortdesc.sort(function(a,b){ return b[1] - a[1]; });

function sortedtable (array)
{

    document . write("<table  border>");
    for (row = 0; row < array.length; ++ row)
    {
        document . write(" <tr>");
        for (col = 0; col < array[row].length; ++ col)
            document . write("  <td>" + array [row] [col] + "</td>");
        document . write(" </tr>");
    }

    document.write("</table>");
}

sortedtable(sortdesc);