Параметры раскрывающегося списка Javascript с шагом 0-100 на 0,5

1

У меня есть функция 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 приращений.

  • 5
    Почему бы просто не сделать for( var i=min; i<=max; i+=multiplier) ???
  • 0
    Изменение i++ на i += 0.5 может привести к увеличению на 0.5.
Показать ещё 1 комментарий
Теги:

5 ответов

1

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())
1

Если вам нужен только список [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())
0

Вы можете просто увеличить 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())
0

Я думаю, что было бы проще просто сделать это

for (var i = min; i <= max; i+=0.5) {
    list.push(i);
}
0

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());

Ещё вопросы

Сообщество Overcoder
Наверх
Меню