JavaScript проблема, она возвращает неожиданное значение - PullRequest
1 голос
/ 26 марта 2020

Цель программы - вернуть значение, которое существует в одной позиции массива или в другой. Проблема в том, что он возвращает undefined.

var ONE = ["a1", "b1", "c1", "d1"];

var TWO = ["a2", "b2", "c2", "d2"];

// ONCLICK 
function main() {
  var p = prompt("Choose the ONE variable array or the TWO variable array");
  var l = parseInt(prompt("Choose de position of the value of that array"));        
  console.log(second(l));
  second(p,l);                                          
}

function second(p,l) {
    if (p == "ONE")
        i = 0;
        while (i < 11){
            if (ONE[i] == l){
                return l;
            }
            i++;
        }

    if (p == "TWO")
        i = 0;
        while (i < 11){
            if (TWO[i] == l){
                return l;
            }
            i++;
        }

}

Ответы [ 3 ]

1 голос
/ 26 марта 2020

Возможно, более элегантное решение?

const arrays = {
  ONE : ["a1", "b1", "c1", "d1"],
  TWO : ["a2", "b2", "c2", "d2"]
}

// ONCLICK 
function main() {
  var p = prompt("Choose the ONE variable array or the TWO variable array");
  var l = parseInt(prompt("Choose de position of the value of that array"));
  console.log(second(p,l));
  second(p, l);
}

const second = (p, l) => arrays[p][l];

main()
1 голос
/ 26 марта 2020

Не ясно, является ли позиция индексом массива. Если бы это было что-то подобное

var ONE = ["a1", "b1", "c1", "d1"];
var TWO = ["a2", "b2", "c2", "d2"];

function second(p,l) {
    if (p === "ONE") {
        return ONE[l];
    }

    if (p === "TWO") {
        return TWO[l];
    }
}

second("ONE", 0); // output "a1"
0 голосов
/ 26 марта 2020
console.log(second(l));

С помощью этого кода вы вызываете функцию с первым параметром, поэтому "p" и нет "l" ("l" не определено), поэтому, когда оно оценивает свой результат, оно возвращает неопределенное значение.

...