您好:
有資料類似
grid
類別, 量 ,限制量
W14, 1 ,10
W12, 2 ,5
W14, 3 ,10
W50, 2 ,20
W14, 8 ,10
要如何跑迴圈,讓他檢查出W14 =1+3+8=12 超出限制量10
謝謝
請問 在js中,要如何 動態提取資料,如下
我於迴圈,
let objPost = new Object();
第一回圈填入
objPost.w14 = 1; --迴圈填入
當第二筆迴圈時,
有可能是 W11 ,W50,W14 , 比如
第2筆
objPost.w12 = 2; -->因為objPost 沒有w12,所以objPost 新增一筆 w12
第三筆資料
w14, 有找到 (如何找?)w14,
objPost.w14= objPost.w14+3;
這要如何 動態找?
並於最後,取出來。
主要是前端的grid (比如有10筆資料),要來統計 各WXX的量,並比對 GRID 上有的值,檢查是否超量
Object.keys(objPost)
Object.entries(objPost)
選一個用吧
不是很清楚你想要做什麼,但原始資料如果是json會單純一些
let data = [
{
"Type": "W14",
"QTY": 1,
"Limit": 10
},
{
"Type": "W12",
"QTY": 2,
"Limit": 5
},
{
"Type": "W14",
"QTY": 3,
"Limit": 10
},
{
"Type": "W50",
"QTY": 2,
"Limit": 20
},
{
"Type": "W14",
"QTY": 8,
"Limit": 10
}
]
const validateLimit = (type) => {
let total = 0;
data.filter(item => item.Type === type)
.forEach(item => {
total += item.QTY
if (total > item.Limit) console.log("Over Limit")
else console.log(`${type} validate success`)
})
}
validateLimit("W14")
const GRID = [
{ type: 'W14', qty: 1, limitQty: 10 },
{ type: 'W12', qty: 2, limitQty: 5 },
{ type: 'W14', qty: 3, limitQty: 10 },
{ type: 'W50', qty: 2, limitQty: 20 },
{ type: 'W14', qty: 8, limitQty: 10 },
]
function formatGridData (sourceGrid) {
return sourceGrid.reduce((acc, item) => {
const { type, qty, limitQty } = item
if (acc[type]) {
acc[type] += qty
} else {
acc[type] = qty
}
return acc
}, {})
}
function validateTypeLimit (data, targetType) {
const { qty, limitQty } = data[targetType]
return qty <= limitQty
}
const formattedGridData = formatGridData(GRID)
const isGridTypeW14Validated = validateTypeLimit(formattedGridData, 'W14')