在发送给用户之前修改数组

时间:2018-03-18 19:47:01

标签: javascript arrays

我目前正在开发一个僵尸程序项目并且遇到了一些代码。 我尝试做的是将用户输入转换为数组,然后在将其发送回用户之前对其进行修改。

就像

user=> hello
bot => :indicator_h::indicator_e::indicator_l::indicator_l::indicator_o:

如您所见,_之后的字母基于用户输入:indicator_{userinput#1},然后在结尾添加另一个:。 我使用split()将用户的输入转换为数组。我已经让机器人发送了:indicator_h:,但它只适用于一个单词,当我发送多个字符时,它会发送:indicator_h,e,l,l,o:而不是单独的&em; <。 / p>

我不知道如何正确地问这个,因为我的英语不太好,也许有人已经问过这个问题。如果是这样,请在将此问题标记为重复之前给我一个指向该主题的链接。 :)

谢谢你的高级, 干杯!

3 个答案:

答案 0 :(得分:2)

试试这个,

&#13;
&#13;
var s = "hello world"
console.log(s.split("").filter(v=> v!==" ").map(i=>":indicator_" + i + ":").join(""))
&#13;
&#13;
&#13;

答案 1 :(得分:1)

input_massage从用户输入中创建一个字母数组。然后遍历每个字母并将其转换为:indicator_{userinput#1}:。然后将其转换回机器人的字符串。

function input_massage(input) {
  return input.split('')
              .map(function(letter) {
                 return `:indicator_${letter}:`
              })
              .join('');
}

console.log(input_massage('hello'))
  

答案 2 :(得分:0)

您可以将输入字符串("hello")拆分为单个字符,使用Array.prototype.map将每个元素转换为相应的指示符,然后将所有修改后的元素连接成一个字符串。< / p>

function toIndicators(str) {
    return str.split("").map(char => `:indicator_${char}:`).join("");
}

toIndicators("hello"); // => ":indicator_h::indicator_e::indicator_l::indicator_l::indicator_o:"

split("")调用将字符串转换为包含所有单个字符的数组。

map调用在数组的所有元素(所有字符)上执行提供的函数。传递给map的函数将单个字符插入到指标模板字符串中的正确位置。

join("")调用将数组的所有元素连接成一个字符串,它们之间没有分隔符。