我有這個standings陣列
{ pos: 1, competitor_id: 583, rating: 2049, tier: 1 },
{ pos: 2, competitor_id: 862, rating: 1818, tier: 1 },
{ pos: 3, competitor_id: 67, rating: 1762, tier: 1 },
{ pos: 4, competitor_id: 758, rating: 1750, tier: 1 },
{ pos: 5, competitor_id: 713, rating: 1735, tier: 1 },
{ pos: 6, competitor_id: 868, rating: 1730, tier: 1 },
{ pos: 7, competitor_id: 946, rating: 1706, tier: 2 },
{ pos: 8, competitor_id: 893, rating: 1705, tier: 2 },
{ pos: 9, competitor_id: 731, rating: 1695, tier: 2 },
{ pos: 10, competitor_id: 869, rating: 1692, tier: 2 },
{ pos: 11, competitor_id: 998, rating: 1672, tier: 2 },
{ pos: 12, competitor_id: 968, rating: 1661, tier: 2 },
{ pos: 13, competitor_id: 460, rating: 1656, tier: 2 },
{ pos: 14, competitor_id: 879, rating: 1648, tier: 2 },
{ pos: 15, competitor_id: 969, rating: 1631, tier: 2 },
{ pos: 16, competitor_id: 925, rating: 1629, tier: 2 },
{ pos: 17, competitor_id: 999, rating: 1626, tier: 2 },
{ pos: 18, competitor_id: 991, rating: 1619, tier: 2 },
{ pos: 19, competitor_id: 956, rating: 1618, tier: 2 },
{ pos: 20, competitor_id: 711, rating: 1617, tier: 2 },
{ pos: 21, competitor_id: 964, rating: 1616, tier: 2 },
tier每次我們向下移動 6 行時,我想增加一。正如您在上面看到的,它正確切換到第 2 層,但未能在 pos:13 增加到 3 并在 pos:19 增加到第 4 層
我試過了
const tiersize = 6;
// setting the counters
let tiercounter = 1;
let limit = tiersize;
// running the loop
for (const row of standings) {
await connectionPromise
.query({
sql: 'update table set tier = ? where competitor_id = ?'
}, [tiercounter, row.competitor_id], );
if (row.pos == limit) {
tiercounter = 1;
limit = tiersize;
}
}
我究竟做錯了什么?
uj5u.com熱心網友回復:
您正在更新資料庫,但也沒有更新陣列。添加row.tier = tiercounter;到回圈中。
const tiersize = 6;
// setting the counters
let tiercounter = 1;
let limit = tiersize;
// running the loop
for (const row of standings) {
await connectionPromise
.query({
sql: 'update table set tier = ? where competitor_id = ?'
}, [tiercounter, row.competitor_id], );
row.tier = tiercounter;
if (row.pos == limit) {
tiercounter = 1;
limit = tiersize;
}
}
但是tiercounter,您可以簡單地從pos.
tiercounter = Math.floor((row.pos-1) / tiersize) 1;
更新后的代碼將是:
const tiersize = 6;
// running the loop
for (const row of standings) {
let tiercounter = Math.floor((row.pos - 1) / tiersize) 1;
await connectionPromise
.query({
sql: 'update table set tier = ? where competitor_id = ?'
}, [tiercounter, row.competitor_id], );
row.tier = tiercounter;
}
uj5u.com熱心網友回復:
您正在檢查帶有限制的 row.pos 編號以及您每次更新的限制。這對條件沒有意義。更新 if 條件如下。
for (const row of standings) {
await connectionPromise
.query({
sql: 'update table set tier = ? where competitor_id = ?'
}, [tiercounter, row.competitor_id], );
if (row.pos % tiersize == 0) {
tiercounter = 1;
limit = tiersize;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/484100.html
標籤:javascript mysql for循环
上一篇:React路由器重定向導致useEffect觸發兩次
下一篇:使用時刻獲取基于周數和天數的日期
