我正在尝试解决以下问题,但我无法将用户传递的值存储到数组中的函数。 这是问题描述: 在这个kata中,我们将帮助Vicky跟踪她所学的单词。
编写一个函数,learnWord(word),它是Robot对象的一种方法。该函数应该报告该单词现在是否已存储,或者她是否已经知道该单词。
示例:
var vicky = new Robot();
vicky.learnWord('hello') -> 'Thank you for teaching me hello'
vicky.learnWord('abc') -> 'Thank you for teaching me abc'
vicky.learnWord('hello') -> 'I already know the word hello'
vicky.learnWord('wow!') -> 'I do not understand the input'
这是我的代码:
function Robot() {
}
Robot.prototype.learnWord = function(word)
{
var res;
var ans=[];
if(/^[a-zA-Z- ]*$/.test(word) === true)
{
if(ans.indexOf(word)===-1)
{
ans.push(word);
res = 'Thank you for teaching me '.concat(word);
return res;
}
else
{
res = 'I already know the word '.concat(word);
return res;
}
}
else
{
res='I do not understand the input';
return res;
}
}
var vicky = new Robot();
我希望函数应该在内存中保存已经传递的参数。
答案 0 :(得分:1)
你必须取消" ans"并将来电替换为' ans'与' this.ans'。
function Robot() {
this.ans = [];
}
Robot.prototype.learnWord = function(word)
{
var res;
if(/^[a-zA-Z- ]*$/.test(word) === true)
{
if(this.ans.indexOf(word)===-1)
{
this.ans.push(word);
res = 'Thank you for teaching me '.concat(word);
return res;
}
else
{
res = 'I already know the word '.concat(word);
return res;
}
}
else
{
res='I do not understand the input';
return res;
}
}
每次你做一个新的机器人();它将有自己的' ans'变量,并在原型中访问' ans'你正在使用的机器人的成员。
答案 1 :(得分:0)
如果您使用的是ECMASCRIPT 2015编译器,则可以尝试使用(...)rest参数。它们是一组适当的参数。 否则使用关键字" arguments"这是一个像对象一样的数组。它没有适当数组的所有方法,你可以通过它进行循环和.length。它存储了所有"额外的"传递给函数的参数 - 例如那些没有命名参数的人