您好我正在尝试查找百分比和整数数组的索引。说arraynum = ['10%','250','20%','500']
,用户发送一个值15%
,该数字在哪个范围内?我可以使用此代码找到整数的索引
function test(number, ranges) {
for (var i = 0; i < ranges.length; ++i) {
if (number < ranges[i]) {
return i;
}
}
}
var ranges = [2000, 4000, 6000, 999999];
console.log(test(1710, ranges));
现在我在数组中有整数和百分比值的混合,用户传递给此函数的数字可以是整数,小数或百分比如何查找给定数字所在的索引?我应该将混合数组中的所有值转换为某种格式吗?这该怎么做?有人可以帮我这个吗?提前谢谢。
答案 0 :(得分:1)
使用parseFloat()
获取字符串的浮点值。您可以使用这样的事实:它只会解析为字符串中的第一个非数字字符,以便忽略%
。
以下是使用ES6中的Array#findIndex
的实现。
function test(number, ranges) {
var num = parseFloat(number);
return ranges.findIndex(function(element) {
return num === parseFloat(element);
});
}
答案 1 :(得分:1)
您可以重新构建代码
arraynum = ['10%','250','20%','500'];
function test(value, arr) {
return arr.indexOf(value.toString());
}
test("10%", arraynum); // 0
test("500", arraynum); // 3
答案 2 :(得分:0)
使用单个输入检查值混合的条件有点棘手,您需要选择 JSON数组。 请运行
var array_of_elements = [{
"Price": 250,
"Percentage": "10"
}, {
"Price": 500,
"Percentage": "25"
}, {
"Price": 750,
"Percentage": "50"
}, {
"Price": 1000,
"Percentage": "75"
}];
function test(number_or_percent, array) {
for (var i = 0; i < array.length; ++i) {
if (number_or_percent.charAt(number_or_percent.length - 1) == "%") {
if (parseInt(array[i].Percentage) > parseInt(number_or_percent.slice(0, ((number_or_percent.length) - 1)))) {
return i;
}
} else {
if (array[i].Price > parseInt(number_or_percent)) {
return i;
}
}
}
}
console.log(test('100', array_of_elements));
console.log(test('30%', array_of_elements));
&#13;
这是你想要的吗?