String.charAt () возвращает неопределенное значение в цикле - PullRequest
1 голос
/ 18 мая 2019

Должно быть, мне здесь не хватает чего-то большого.По какой-то причине .charAt (i) возвращает неопределенное значение в этом фрагменте кода.

Демо

    let images = {};
    let alphabet = 'abcdefghijklmnopqrstuvwxyz';
    let imageArray = ['a', 'b', 'c', 'd'];
    for (let i = 0; i < imageArray.length; i++){
        let letter = alphabet.charAt[i]; // returns undefined
        images[letter] = imageArray[i];
    }

    console.log(images); // {undefined: "d"}

Ответы [ 4 ]

4 голосов
/ 18 мая 2019

Вам нужен вызов функции String#charAt

alphabet.charAt(i);
//             ^ ^

вместо метода доступа к свойству в скобках.

let images = {};
let alphabet = 'abcdefghijklmnopqrstuvwxyz';
let imageArray = ['a', 'b', 'c', 'd'];
for (let i = 0; i < imageArray.length; i++) {
  let letter = alphabet.charAt(i); // returns undefined
  images[letter] = imageArray[i];
}

console.log(images); // {undefined: "d"}
2 голосов
/ 18 мая 2019

В вашем синтаксисе есть ошибка! Конечно, вы хотите вызвать функцию alphabet.charAt. Но вы делаете charAt[i] вместо charAt(i). Квадратные скобки - это синтаксис для доступа к свойству массива / объекта с помощью переменной (i), поэтому в итоге вы получите свойство функции charAt - например, charAt[0]. Но этого не существует, поэтому оно просто оценивается как undefined.

Итак, чтобы это исправить, просто замените квадратные скобки (charAt[i]) на круглые скобки (charAt(i)). Вы всегда используете скобки для вызова функции, а не квадратные скобки.

1 голос
/ 18 мая 2019

Вы должны вызвать функцию .charAt() как функцию, подобную .charAt(i) вместо .charAt[i]

0 голосов
/ 18 мая 2019

Вот оно! Alphabet.charAt () - функция, а не массив. измените [] на (), и он начнет работать.

let images = {};
let alphabet = 'abcdefghijklmnopqrstuvwxyz';
let imageArray = ['a', 'b', 'c', 'd'];
for (let i = 0; i < imageArray.length; i++){
    let letter = alphabet.charAt(i); // returns undefined
    images[letter] = imageArray[i];
}

console.log(images); // {undefined: "d"}
...