首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字符串类型的单个元素“神奇地”转换为字符串的数组

字符串类型的单个元素“神奇地”转换为字符串的数组
EN

Stack Overflow用户
提问于 2017-08-08 11:58:58
回答 2查看 51关注 0票数 0

不确定为什么会发生这种情况。此时,在我的代码中,这些数组可能只有一个元素。

代码语言:javascript
运行
复制
actualAnswer = actualAnswer.split(" ");
playerAnswer = playerAnswer.split(" ");

然后,我通过这个函数传递它们。

代码语言:javascript
运行
复制
     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。

这是柱塞,不幸/幸运的是,它似乎在那里按预期工作,所以我很困惑:https://plnkr.co/edit/nIqq3VdjjMa2GDWyqkxx

编辑:这个问题出现在我的代码的前面的交叉点,抱歉!

EN

回答 2

Stack Overflow用户

发布于 2017-08-08 12:32:56

您可以使用Array.prototype.map()返回一个新数组,如果存在,则使用String.prototype.replace()替换字符串中的结尾"S"字符,返回一个属性设置为函数参数标识符的对象

代码语言:javascript
运行
复制
const regexp = /S$/;
const re = "";

function parseAnswer(arr, regexp_, re_) {
  return arr.map(function(prop) {return prop.replace(regexp_, re_)})
}

function checkForPlural(playerAnswer, actualAnswer) {
  return {
    playerAnswer: parseAnswer(playerAnswer, regexp, re),
    actualAnswer: parseAnswer(actualAnswer, regexp, re)
  }
}

console.log(checkForPlural("abc defS ghi".split(" "), "12S 456 78S".split(" ")))

票数 0
EN

Stack Overflow用户

发布于 2017-08-08 13:04:25

有问题的代码工作正常,“魔术”转换是由于另一个函数中的错误,该函数用字符串覆盖数组。是我的错。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45559052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档