首页 > 解决方案 > 如何使用计数器打破循环

问题描述

寻找可能使用 for 循环的逻辑来遍历使用 Shopify 的订购系统的订单。订单 ID 按顺序输入,因为我们希望根据订单号分配取货地点。

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

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

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

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

<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>

标签: javascript

解决方案


这样的事情怎么样?前 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]);


推荐阅读