开发者问题收集

JavaScript TypeError:无法读取未定义的属性“split”

2019-11-10
581

当我尝试运行此 js 时,我遇到了此带有 split 的 typeError。我不确定如何修复它,我按照教科书所示正确定义了它。

var current;
var string;

console.log("Enter words separated by spaces.");
prompt(string);

var array = [];
array = string.split(" ");

for(i = 0; i < array.length; i++)
    {
        var frequency = 0;
        current = array[i];
            for(i = 0; i < array.length; i++)
                {
                    if(current === array[i])
                        frequency++;
                }
        console.log(current + " - " + frequency);    
    }
}

正常运行时,该函数应产生如下输出:hey - 1。 它计算每个唯一单词的频率,并在单词旁边显示它在字符串中出现的次数。任何帮助都将不胜感激,谢谢。

3个回答

主要问题是您没有从提示中读取 string 。在下面的示例中,我将结果存储为 s

此外,您在第二个 for 循环中再次使用了 i 。为此使用另一个字母(惯例是 j ):

var current;
var string;
var s;

console.log("Enter words separated by spaces.");
s = prompt(string);

var array = [];
array = s.split(" ");

console.log(array);

for(i = 0; i < array.length; i++){
        var frequency = 0;
        current = array[i];
        
        for(j = 0; j < array.length; j++){
            if(current === array[j]) frequency++;
        }
                
        console.log(current + " - " + frequency);    
    }

希望这能有所帮助。

Mike Poole
2019-11-10

只是一些小错误:

  1. prompt 存储在 string 中: string = prompt(string);
  2. 给第二个 for 循环另一个变量 j ,这样 i 就不会被覆盖。
var current;
var string;

console.log("Enter words separated by spaces.");
string = prompt(string);

var array = [];
array = string.split(" ");

for (i = 0; i < array.length; i++) {
  var frequency = 0;
  current = array[i];
  for (j = 0; j < array.length; j++) {
    if (current === array[j])
      frequency++;
  }
  console.log(current + " - " + frequency);
}
tom
2019-11-10

您可以执行 .splice ,而不是执行 split

我相信这个 链接 很有用。

但是,首先,您必须在数组中搜索“ ”。 您可以通过 string.search(" ") 实现这一点,它返回找到“ ”的位置。

此外,您的 prompt 语法是错误的,应该是:

var something = prompt("Enter words divided by space.");

Chris
2019-11-10