#javascript #google-sheets
#javascript #google-таблицы
Вопрос:
Я пытаюсь создать простую функцию электронной таблицы Google для преобразования ранга в систему баллов, а затем добавить баллы. Пользователь (A, B, C, D), имеющий доступ к электронной таблице, будет оценивать свои варианты (W, X, Y, Z) на основе первого выбора (1), второго выбора (2) и третьего выбора (3).
Строки — это избиратели, а варианты — в столбцах.
Каждый 1 голос = 3 балла; 2 голоса = 2 балла; 3 голоса = 1 балл.
По какой-то причине мой скрипт выводит только длину скрипта, а не сумму баллов. Можете ли вы, пожалуйста, помочь мне определить, где мой скрипт работает неправильно?
function tally(rankarray) {
var rank = 0; // this is the vote cast
var result = 0; // this will hold the total
var value = 0; // this holds the value of the vote cast
for (var i=0; i < rankarray.length; i ){
rank = rankarray[i];
if (rank = 1) {
value = 3;
}
if (rank = 2) {
value = 2;
}
if (rank = 3) {
value = 1;
}
result = value;
}
return resu<
}
Редактировать:
Я думаю, что я это исправил. Кто-нибудь видит какую-либо проблему с приведенным ниже?
function tally(rankarray) {
var rank = 0;
var result = 0; // this will hold the total
var value = 0; // this holds the value of the vote cast
for (var i=0; i < rankarray.length; i ){
rank = rankarray[i];
if (rank == 1) {
value = 3;
}
else if (rank == 2) {
value = 2;
}
else if (rank == 3) {
value = 1;
}
result = value;
value = 0;
}
return resu<
}
Комментарии:
1. Пожалуйста, обратите внимание, что
if(rank = 1)
это не то, что вы думаете. Одиночный знак равенства указывает ему присвоить значение1
переменнойrank
. Вам нужен двойной знак равенства:if(rank == 1)
, который сообщает ему, чтобы проверить,rank
равно1
ли значение. (Несмотря на это, ответ Нанаши, который используетswitch
конструкцию вместоif
, является отличным решением в этом случае.)
Ответ №1:
Попробуйте следующий скрипт:
function tally(rankarray)
{
var rank = 0; // this is the vote cast
var result = 0; // this will hold the total
var value = 0; // this holds the value of the vote cast
for (var i=0; i < rankarray.length; i )
{
rank = rankarray[i];
switch(rank)
{
case 1:
value = 3;
break;
case 2:
value = 2;
break;
case 3:
value = 1;
break;
}
result = value;
}
return resu<
}
Надеюсь, это поможет.
Комментарии:
1. Спасибо. Это вернуло «0» независимо от голосов. Я думаю, что я разобрался со своей проблемой. Я заменил операторы if на elseif, а также изменил их на логические значения if (ранг == 1) и т.д.