Javascript 从多维数组中删除具有0的行
我有两组数组,它们被连接在一起,使之成为二维的。我喜欢做的是删除任何在连接后价格为0的行,然后排序并在html表中显示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
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);