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
只是一些小错误:
-
将
prompt
存储在string
中:string = prompt(string);
-
给第二个
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