У меня есть функция JavaScript, которая создает значения для раскрывающегося списка на моей странице. Я в настоящее время увеличиваю на 5, (0-100).
Я пытаюсь изменить это на увеличение на .5
вместо этого, но он продолжает просто возвращать 0-100
без увеличения.
Мой ожидаемый результат - 0,.5,1,1.5,2,2.5... 100
.
Вот моя функция до сих пор:
/**
* Generate our possible error scores
*/
function generateErrorScores() {
var min = 0,
max = 100,
multiplier = 5, // Tried .5 here
list = [];
// Loop between min and max, increment by multiplier
for (var i = min; i <= max; i++) {
if (i % multiplier === 0) {
list.push(i);
}
}
return list;
}
console.log(generateErrorScores())
Скрипка: http://jsfiddle.net/3y451jga/
У меня есть чувство, что if (i % multiplier === 0) {
вызывает проблему, но я не уверен, как адаптировать его к .5
приращений.
if (i % multiplier === 0)
не имеет смысла. Это работает, если вам нужны множители из списка, но в этом случае вам нужны дроби.
Интересно, что ваш комментарий правильный ("увеличение на множитель"), но код этого не делает. Действительное решение будет примерно таким:
function generateErrorScores() {
var min = 0,
max = 100,
segment = .5,
list = [];
// Loop between min and max, increment by segment
for (var i = min; i <= max; i += segment) {
list.push(i);
}
return list;
}
console.log(generateErrorScores())
Если вам нужен только список [0, 0.5, 1, 1.5,..., 100]
вы можете сделать:
/**
* Generate our possible error scores
*/
function generateErrorScores() {
const multiplier = 0.5
return [...Array((100 / multiplier) + 1)].map((x, i) => i * multiplier)
}
console.log(generateErrorScores())
Вы можете просто увеличить i
на 0.5
и вы получите ожидаемый результат, здесь нет необходимости в дополнительной проверке.
for (var i = min; i <= max; i+=0.5) {
/**
* Generate our possible error scores
*/
function generateErrorScores() {
var min = 0,
max = 100,
multiplier = 0.5,
list = [];
// Loop between min and max, increment by multiplier
for (var i = min; i <= max; i += 0.5) {
list.push(i);
}
return list;
}
console.log(generateErrorScores())
Я думаю, что было бы проще просто сделать это
for (var i = min; i <= max; i+=0.5) {
list.push(i);
}
function generateErrorScores() {
var min = 0,
max = 100,
increment = 0.5,
list = [];
// Loop between min and max, increment by multiplier
for (var i = min; i <= max; i = i + increment) {
list.push(i);
}
return list;
}
console.log(generateErrorScores());
for( var i=min; i<=max; i+=multiplier)
???i++
наi += 0.5
может привести к увеличению на 0.5.