String.charAt()在循环中返回undefined

时间:2019-05-18 19:39:32

标签: javascript arrays string charat

一定是我在这里错过了一些大事。由于某些原因,.charAt(i)在这段代码中返回undefined。

Demo

    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 个答案:

答案 0 :(得分:4)

您需要调用String#charAt

alphabet.charAt(i);
//             ^ ^

代替带有括号的property accessor

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"}

答案 1 :(得分:2)

您的语法有误!当然,您想调用alphabet.charAt函数。但是您正在执行charAt[i]而不是charAt(i)。方括号是用于通过变量(i访问数组/对象的属性的语法,因此最终得到函数的属性 charAt-例如charAt[0]。但这并不存在,因此它的计算结果仅为undefined

因此,要解决此问题,只需将方括号(charAt[i])替换为括号(charAt(i))。您总是使用括号而不是方括号来调用函数。

答案 2 :(得分:1)

您必须像调用.charAt()这样的函数而不是.charAt(i)来调用.charAt[i]

答案 3 :(得分:0)

在这里!,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"}