如何使用计数器断开循环



寻找可能使用 for 循环的逻辑,使用 Shopify 循环浏览订购系统的订单。订单 ID 按顺序传入,当它们进来时,我们希望根据订单号分配取货地点。

例如,前 100 个订单

的提货位置将设置为位置 A,接下来的 100 个订单将设置为位置 B,依此类推。但是一旦我们达到 500 订单,我们希望从位置 A 重新开始,然后遍历位置。在订单停止之前,这个循环不会结束。

所有订单都在一个中心位置准备,并被发送到相应的位置。 在网站上下订单后,就会创建订单ID,因此我们希望在最终的订单状态页面上显示取货地点。

如果我可以提供澄清,请告诉我。

我可以通过静态分配订单 ID 的 If 语句来实现此逻辑,当然这是不可扩展的,因为我们不知道会得到多少订单。

<script>
  var orderId = {{ order_number }};
if (orderId > 100) {
  Shopify.Checkout.OrderStatus.addContentBox(
    '<h3> Pickup Location A</h3>'
)}
 else {
  Shopify.Checkout.OrderStatus.addContentBox(
    '<h2>Pickup Location</h2>'    
  )}
</script>

这样的事情怎么样?前 100 个订单转到 A,第二个 100 个订单转到 B 个,...,第五个 100 个订单转到E然后它开始循环(第六个 100 个订单转到A,第七个 100 个订单转到B,...(。

const orderId = prompt('Enter an order number'); //TODO: set to actual order number
const pickupLocations = [
	['<h3>Pickup Location A</h3>', '<img src="https://dummyimage.com/30&text=A"></img>'],
	['<h3>Pickup Location B</h3>', '<img src="https://dummyimage.com/30&text=B"></img>'],
	['<h3>Pickup Location C</h3>', '<img src="https://dummyimage.com/30&text=C"></img>'],
	['<h3>Pickup Location D</h3>', '<img src="https://dummyimage.com/30&text=D"></img>'],
	['<h3>Pickup Location E</h3>', '<img src="https://dummyimage.com/30&text=E"></img>']
];
const pickupIndex = Math.floor(orderId/100) % pickupLocations.length;
//TODO: comment out console.log() in favor of next line
console.log(...pickupLocations[pickupIndex]);    
//Shopify.Checkout.OrderStatus.addContentBox(...pickupLocations[pickupIndex]);

我认为这符合我认为您的要求。

pickupLocations = ['A','B','C','D','E'];
pickupGroup = 0;
orderCounter = 1;
for (orderID=1, orderID < orderIDs.length; orderID++) {
   pickup = pickupLocations[pickupGroup];
   if (orderCounter==100) {
      pickupGroup++;
      orderCounter=0;
   }
}

如果你真的想突破,你可以使用"break;"命令。 或者,要让循环仅在满足条件时运行,"while(条件({...}"。

最新更新