Javascript 以这种方式放置getElementById后,排序函数未按预期工作

Javascript 以这种方式放置getElementById后,排序函数未按预期工作,javascript,arrays,sorting,if-statement,getelementbyid,Javascript,Arrays,Sorting,If Statement,Getelementbyid,我是一个初学者,正在构思自己的第一个项目,但我无法获得关于这个案例的信息 应用程序应该接收有关产品的数据,包括名称、价格、库存、销售数量,然后将它们从最畅销的产品到最畅销的产品进行排序 事情是这样的,我试图通过把这个块放到另一个地方来缩短代码的冗长程度 所以我从这个开始 var余额文塔=(ev)=>{ ev.preventDefault(); 疾病分类((a,b)=>{ 退货(a.售出金额{ ev.preventDefault(); 疾病分类((a,b)=>{ 退货(a.售出金额>b.售出金额)

我是一个初学者,正在构思自己的第一个项目,但我无法获得关于这个案例的信息

应用程序应该接收有关产品的数据,包括名称、价格、库存、销售数量,然后将它们从最畅销的产品到最畅销的产品进行排序

事情是这样的,我试图通过把这个块放到另一个地方来缩短代码的冗长程度

所以我从这个开始

var余额文塔=(ev)=>{
ev.preventDefault();
疾病分类((a,b)=>{
退货(a.售出金额
对此

var指数=0;
var余额文塔=(ev)=>{
ev.preventDefault();
疾病分类((a,b)=>{
退货(a.售出金额>b.售出金额)?1:-1
});
索引++;
var prefixName=“name”;
var prefixStock=“股票”;
var prefixPrice=“价格”;
var prefixSold=“已售出”;
var prefixLastProd=“lastProduction”;
document.getElementById(前缀名+索引).innerHTML=diseños[index-1].designName;
document.getElementById(prefixStock+index).innerHTML=diseños[index-1].currentStock;
document.getElementById(prefixPrice+index).innerHTML=diseños[index-1].priceA;
document.getElementById(prefixSold+index).innerHTML=diseños[index-1].AmountSelled;
document.getElementById(prefixLastProd+index).innerHTML=diseños[index-1].productionAmount;
}
除了sort函数外,其他功能都可以正常工作,它在第一个硬编码版本中工作正常,但在第二个版本中根本不工作

Pd:“diseños”是一个数组,通过此函数在每个索引中保存一个对象(“diseño”,不带s)

let desños=[];
const addDesign=(ev)=>{
ev.preventDefault();
让迪塞诺={
设计名称:document.getElementById(“textBox1”).value,
currentStock:document.getElementById(“textBox2”).value,
ProductionMount:document.getElementById(“textBox3”).value,
priceA:document.getElementById(“textBox4”).value,
售出金额:document.getElementById(“textBox5”).value
}
迪塞诺斯推(迪塞诺);
document.forms[0].reset();

你们能帮我解决这个问题吗?

制作一个具有所有所需属性的对象,然后在每次需要排序时对对象数组运行此方法

var balanceVenta = diseños.OrderByDescending(x =>x.amountSold).ToList()

您很接近了;您只需要将代码放在
diseños
上的一个循环中。我还简化了排序逻辑,假设
amountsell
是一个数字。将
a.amountsell
b.amountsell
的位置交换为升序到降序

var余额文塔=(ev)=>{
ev.preventDefault();
分类((a,b)=>a.amountsell-b.amountsell);
var prefixName=“name”;
var prefixStock=“股票”;
var prefixPrice=“价格”;
var prefixSold=“已售出”;
var prefixLastProd=“lastProduction”;
对于(var指数=0;指数
if(diseños.length==索引){
没有意义。你不应该在数组上循环吗?我刚刚意识到这没有意义,但是当我在数组上循环时,它不会停止,直到在下一个案例中返回未定义的结果。想法是一次添加一个产品,并根据旧的输入对新的输入进行排序。注意,如果
amountsell
是一个数字,你可以使用
diseños.sort((a,b)=>a.amountselled-b.amountselled)
进行升序,使用
diseños.sort((a,b)=>b.amountselled-a.amountselled)
进行降序。对,实际上我正在将每个对象(diseño)发送到数组(diseños),因此在这种情况下,它应该是diseños.OrderByDescending(x.amountselled>x.amountselled)但它仍然和sort()一样它没有根据我在.ammontsell属性中得到的数量对索引的顺序进行排序,当我硬编码索引和getelementsbyId@federico_531我在c#中的更新对我有效,而不是在javascript中对我有效,但必须由我来监督something@federico_531是“amountselled”的拼写错误吗从您最初的“Ammontsell”观点来看,双mWorks就像一个魅力,谢谢!