【发布时间】:2018-01-15 11:26:13
【问题描述】:
不知道为什么会这样。在我的代码中,这些数组可能只有一个元素。
actualAnswer = actualAnswer.split(" ");
playerAnswer = playerAnswer.split(" ");
然后我将它们传递给这个函数。
function checkForPlural(playerAnswer, actualAnswer){
var answerObject = {playerAnswer: playerAnswer,
actualAnswer: actualAnswer};
for (var answerWord in actualAnswer){
if (actualAnswer[answerWord].slice(-1) == "S")
{
answerObject.actualAnswer[answerWord] = actualAnswer[answerWord].substring(0, actualAnswer[answerWord].length - 1);
}
}
for (var answerWord in playerAnswer){
if (playerAnswer[answerWord].slice(-1) == "S")
{
answerObject.playerAnswer[answerWord] = playerAnswer[answerWord].substring(0, playerAnswer[answerWord].length - 1);
}
}
}
当我返回对象时,如果传入的数组只有一个元素,javascript 决定将它们解释为字符串,所以如果我要使用 answerObject.actualAnswer.length 它会给我字符串的长度,而不是只需 1 个。
这是 plunker,不幸的是/幸运的是,它似乎在那里按预期工作,所以我很困惑: https://plnkr.co/edit/nIqq3VdjjMa2GDWyqkxx
编辑:问题出在我的代码中较早的连接处,抱歉!
【问题讨论】:
-
创建对象和使用
for..in循环的目的是什么?您已将数组传递给函数? -
@guest271314 我想我可以直接返回数组。我只是想我会把它们塞进一个对象中,然后出于……原因再次提取数组。我不确定这是不是疯了!无论哪种方式,我都会或一直在返回一个对象或多维数组,尽管没有?
-
预期结果是什么?如果字符串中的最后一个字母是
"S",则返回字符串直到最后一个"S"? -
预期的结果是有一个包含两个数组的对象。相反,如果传入的数组有一个元素,则返回的对象内部有两个字符串。
-
@KaranDesai 已添加到我的帖子中
标签: javascript arrays function types