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

时间:2019-11-10 15:13:42

标签: javascript

当我尝试运行此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);    
    }
}

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

3 个答案:

答案 0 :(得分:1)

主要问题是您没有从提示中阅读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);    
    }

我希望这会有所帮助。

答案 1 :(得分:0)

您可以执行split而不是.splice

我相信这个link会有所帮助。

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

此外,您的提示语法错误,应该为:

var something = prompt("Enter words separated by spaces.");

答案 2 :(得分:0)

只有小错误:

  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);
}