寻找可能使用 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(条件({...}"。