gpt4 book ai didi

JavaScript 计算错误超过 100

转载 作者:行者123 更新时间:2023-11-30 07:51:58 25 4
gpt4 key购买 nike

我有一个函数可以根据 quantity range: price 的数组检查数字(数量)

var data = {
"1 - 4": " $4.25 ",
"10 - 24": " $3.25 ",
"25 - 49": " $3.04 ",
"5 - 9": " $3.51 ",
"50+": " $2.84 "
}

function get_price(arr, val) {
var price = Object.keys(arr).reduce((a, c) => {
var s = c.trim();
if (/\d+\-\d+/.test(s)) {
var range = s.split("-");
if (val >= parseInt(range[0]) && val <= parseInt(range[1])) {
a = arr[c];
}
} else {
s = s.replace(/\D/g, "");
if (val >= s) {
a = arr[c];
}
}
return a;
}, 0);
return price;
}

问题是,如果一个数字大于 50 但小于 100,则计算正确,超过 100 则无法看到 50+ 并使用该价格。

感谢任何帮助!

最佳答案

使用字符串作为对象的键,这会很好地工作:

const range = {
"1-4": " $4.25 ",
"10-24": " $3.25 ",
"25-49": " $3.04 ",
"5-9": " $3.51 ",
"50+": " $2.84 "
}

更多关于 property accessors :

In this code, property must be a valid JavaScript identifier, i.e. a sequence of alphanumerical characters, also including the underscore ("_") and dollar sign ("$"), that cannot start with a number. For example, object.$1 is valid, while object.1 is not.

- MDN Web docs

演示:

function get_price(arr, val) {
var price = Object.keys(arr).reduce((a, c) => {
var s = c.trim();
if (/\d+\-\d+/.test(s)) {
var range = s.split("-");
if (val >= parseInt(range[0]) && val <= parseInt(range[1])) {
a = arr[c];
}
} else {
s = s.replace(/\D/g, "");
if (val >= s) {
a = arr[c];
}
}
return a;
}, 0);
return price;
}

const range = {
"1-4": " $4.25 ",
"10-24": " $3.25 ",
"25-49": " $3.04 ",
"5-9": " $3.51 ",
"50+": " $2.84 "
}

console.log(get_price(range, 60))
console.log(get_price(range, 500))

关于JavaScript 计算错误超过 100,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51104756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com