問題分為2部分。
1.如何構造json陣列中的資料
2.如何從json陣列中計算價格
我需要將價格資料以 JSON 格式存盤在 HTML 中,因為對服務器的 AJAX 請求太慢/太重。
資料作為序列化字串存盤在資料庫中。這是通過 CSV 檔案上傳添加到資料庫中的。CSV 檔案如下所示。
50 100 150 200 250
20 70 90 110 130 150
30 90 110 130 150 170
40 110 130 150 170 190
50 130 150 170 190 210
60 150 170 190 210 230
如果你輸入100寬度和40高度,價格應該是130。
如果你輸入170寬度和52高度,價格應該是210。
如果未找到列或行,則應向上舍入到下一列或行。
如果您需要根據寬度和高度計算價格,將其存盤為 JSON 行內的最佳方法是什么?
您將如何根據用戶輸入
width和計算價格height?
我不是在尋找特定的代碼,只是關于 JSON 結構以及如何從中計算的建議。
uj5u.com熱心網友回復:
您可以為寬度和高度取兩個陣列,為價格取一個二維陣列。
為了獲得合適的價格,首先獲得指數,然后是價格。
也許您需要為這些值添加一些保護,以防止得到錯誤的索引。
const
getPrice = (width, height) => {
const
w = widths.findIndex(w => width <= w),
h = heights.findIndex(h => height <= h);
return prices[w][h];
},
widths = [50, 100, 150, 200, 250],
heights = [20, 30, 40, 50, 60],
prices = [[70, 90, 110, 130, 150], [90, 110, 130, 150, 170], [110, 130, 150, 170, 190], [130, 150, 170, 190, 210], [150, 170, 190, 210, 230]];
console.log(getPrice(100, 30));
console.log(getPrice(90, 25));
uj5u.com熱心網友回復:
當寬度和高度步長有規則模式時,您還可以執行以下操作:
const h0=20,dh=10,w0=50,dw=50, prices=
[[ 70, 90, 110, 130, 150],
[ 90, 110, 130, 150, 170],
[ 110, 130, 150, 170, 190],
[ 130, 150, 170, 190, 210],
[ 150, 170, 190, 210, 230]];
// w,h
[[100,30],[90,25]].forEach(([w,h])=>
console.log(prices[Math.ceil((h-h0)/dh)][Math.ceil((w-w0)/dw)]));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/417682.html
標籤:
