我有一个函数,它检查数组(数量)与数组 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;
}Run Code Online (Sandbox Code Playgroud)
问题是,如果一个数字大于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 "
}
Run Code Online (Sandbox Code Playgroud)
有关物业存取的更多信息:
在此代码中,属性必须是有效的JavaScript标识符,即一系列字母数字字符,还包括不能以数字开头的下划线(
"_")和美元符号("$").例如,object.$1有效,而object.1不是.
演示:
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))Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |