javascript 如何按顺序添加到每个客户中的字段?

92dk7w1h  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(117)

当我单击该按钮时,我应该将其添加到itemSold字段中。但示例应该是这样的:
1.我单击任意按钮。第一个客户的'itemSold'数组中的第一个元素为空。这就是他在这里添加它的原因。
1.我单击任意按钮。第二个客户的'itemSold'数组中的第一个元素为空。这就是他在这里添加它的原因。
1.我单击任意按钮。第一个客户的'itemSold'数组中的第二个元素为空。这就是他在这里添加它的原因。
1.我单击任意按钮。第二个客户的'itemSold'数组中的第二个元素为空。这就是他在这里添加它的原因。
第一个

hmae6n7t

hmae6n7t1#

所以要想不存储任何状态而成为+-普适的,它可能是这样的

function addItem(item) {
 const nullIndexes = customers.map(c => c.product.itemSold.indexOf(null));
 if(nullIndexes.every(i => i == -1)) return;
 const minIndex = Math.min(...nullIndexes.filter(i => i != -1))
 for(var customer of customers) {
     if(customer.product.itemSold[minIndex] === null) {
         customer.product.itemSold[minIndex] = item;
         break;
     }
 }    
}

一些解释
1.我们需要知道数组中是否还有空值,为此我们需要为每个数组customers.map(c => c.product.itemSold.indexOf(null));获取空值的索引
1.现在,我们需要检查,如果没有找到空值(所有索引都是-1),则我们完成if(nullIndexes.every(i => i == -1)) return;
1.然后我们需要得到我们需要替换的值的正确索引,为此我们需要上面找到的最小索引,但不计算-1(因为-1意味着特定数组已经满了)const minIndex = Math.min(...nullIndexes.filter(i => i != -1))
1.现在,我们所要做的就是检查客户,找到在上面确定的索引中为空的特定客户,并将其替换。
不要误解我的意思-这很可能不是最佳的最优方法,但它是一种解决方案

相关问题