Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Array-JavaScript中的元素替换字符“*”的实例_Javascript_Arrays_String_Function_Ecmascript 6 - Fatal编程技术网

用Array-JavaScript中的元素替换字符“*”的实例

用Array-JavaScript中的元素替换字符“*”的实例,javascript,arrays,string,function,ecmascript-6,Javascript,Arrays,String,Function,Ecmascript 6,我知道我需要一个空白的空数组,如果字符不是星号,就把它们从句子中推到数组中 我认为这将帮助我理解一旦我真的想要遍历数组中的项并将它们用作替换项时应该做什么 function replaceAsterisk(sentence, newWords) { let newArray = []; let character = sentence.split(""); console.log(character); // if the character is not an aste

我知道我需要一个空白的空数组,如果字符不是星号,就把它们从句子中推到数组中

我认为这将帮助我理解一旦我真的想要遍历数组中的项并将它们用作替换项时应该做什么

function replaceAsterisk(sentence, newWords) {

  let newArray = [];

  let character = sentence.split("");

  console.log(character);

  // if the character is not an asterisk, push it into the new array
  if (character !== "*") {
    newArray.push(character);
  }

  // if the character is an asterisk, push "cat" into the new array
  else {
    newArray.push("cat");
  }
  // return new array as a string
  return newArray.join(" ");
}

console.log(replaceAsterisk("My name is * and I am a *.", ["Sabrina", "Black Cat", "extra", "words"]));

即使现在,这也不会将cat推入数组-为什么?

您必须首先循环遍历所有字符,请参见下面的示例

函数替换星号、新词{ 设newArray=[]; 让字符=句子.split; console.logcharacter; 字符。forEachfunctionc{ //如果字符不是星号,请将其放入新数组中 如果c!==*{ newArray.pushc; } //如果字符是星号,则将cat推入新数组 否则{ newArray.pushcat; } }; //以字符串形式返回新数组 返回newArray.join; }
console.logreplaceAsteriskMy的名字是*而我是*,[萨布丽娜,黑猫,额外,单词] 您必须首先遍历所有字符,请参见下面的示例

函数替换星号、新词{ 设newArray=[]; 让字符=句子.split; console.logcharacter; 字符。forEachfunctionc{ //如果字符不是星号,请将其放入新数组中 如果c!==*{ newArray.pushc; } //如果字符是星号,则将cat推入新数组 否则{ newArray.pushcat; } }; //以字符串形式返回新数组 返回newArray.join; }
console.logreplaceAsteriskMy的名字是*而我是*,[萨布丽娜,黑猫,额外,单词] 您需要循环浏览句子中的所有字符:

函数替换星号、新词{ 设newArray=[]; 对于let i=0;i<句子长度;i++{//这一行 字符=句子[i]; //如果字符不是星号,请将其放入新数组中 如果字符!==*{ newArray.pushcharacter; } //如果字符是星号,则将cat推入新数组 否则{ newArray.pushcat; } } //以字符串形式返回新数组 返回newArray.join; }
console.logreplaceAsteriskMy的名字是*而我是*,[萨布丽娜,黑猫,额外,单词] 您需要循环浏览句子中的所有字符:

函数替换星号、新词{ 设newArray=[]; 对于let i=0;i<句子长度;i++{//这一行 字符=句子[i]; //如果字符不是星号,请将其放入新数组中 如果字符!==*{ newArray.pushcharacter; } //如果字符是星号,则将cat推入新数组 否则{ newArray.pushcat; } } //以字符串形式返回新数组 返回newArray.join; } console.logreplaceAsteriskMy的名字是*而我是*,[萨布丽娜,黑猫,额外,单词] 与生成替换字符串的函数一起使用。在函数中,使用计数器从新词中获取当前替换:

函数替换星号、新词{ 设计数器=0; 返回句子。替换/\*/g,=>新词[counter++]|; } console.logreplaceAsteriskMy的名字是*而我是*,[萨布丽娜,黑猫,额外,单词] 与生成替换字符串的函数一起使用。在函数中,使用计数器从新词中获取当前替换:

函数替换星号、新词{ 设计数器=0; 返回句子。替换/\*/g,=>新词[counter++]|; }
console.logreplaceAsteriskMy的名字是*而我是*,[萨布丽娜,黑猫,额外,单词] 您需要循环浏览句子中的每个字符,并使用shift替换单词:

函数替换星号、新词{ 让newStr=; […句子].forEachchar=>{ 如果字符!=*{ newStr+=char; }否则{ newStr+=newWords.shift; } }; 返回新闻TR; }
console.logreplaceAsteriskMy的名字是*而我是*,[萨布丽娜,黑猫,额外,单词] 您需要循环浏览句子中的每个字符,并使用shift替换单词:

函数替换星号、新词{ 让newStr=; […句子].forEachchar=>{ 如果字符!=*{ newStr+=char; }否则{ newStr+=newWords.shift; } }; 返回新闻TR; }
console.logreplaceAsteriskMy的名字是*而我是*,[萨布丽娜,黑猫,额外,单词] 这很有效。在空字符串上拆分可能会很奇怪,请参见

让newArray=[],句子=我的名字是*,我是*。; 对于句子{newArray.pushchar;}的let char forlet i=0;iconsole.lognewArray 这很有效。在空字符串上拆分可能会很奇怪,请参见

让newArray=[],句子=我的名字是*,我是*。; 对于句子{newArray.pushchar;}的let char forlet i=0;我喜欢新的数组。 长我++{ ifnewArray[i]=*{newArray[i]=cat;} }
console.lognewArray 您可以使用正则表达式组匹配和Array.prototype.shift

替换星号=文本,文字=>{ const_words=words.slice; 返回text.replace/\*/g,match=>\u words.shift | | match; } //有效输入 const output1=replaceSteriskmy的名字是*而我是*,[萨布丽娜,黑猫,额外,单词]; console.logoutput1; //空输入 const output2=replaceSteriskmy name是*而我是*,[];
console.logoutput2 您可以使用正则表达式组匹配和Array.prototype.shift

替换星号=文本,文字=>{ const_words=words.slice; 返回text.replace/\*/g,match=>\u words.shift | | match; } //有效输入 const output1=replaceSteriskmy的名字是*而我是*,[萨布丽娜,黑猫,额外,单词]; console.logoutput1; //空输入 const output2=replaceSteriskmy name是*而我是*,[];
console.logoutput2;你必须这样做吗?您不允许使用内置替换函数吗?另外,您从该代码中得到了什么结果?数组的字符实例。请注意,拆分后的字符变量将是数组,然后是字符!==*永远都是真的。很少你在你的控制台上看不到这一点…你在那里有引号。移除它们/\*/gDo你必须这样做吗?您不允许使用内置替换函数吗?另外,您从该代码中得到了什么结果?数组的字符实例。请注意,拆分后的字符变量将是数组,然后是字符!==*永远都是真的。很少你在你的控制台上看不到这一点…你在那里有引号。移除它们/\*/gYou遗漏了newArray.join;中使用的不必要空间;。这不是必需的,可以直接连接字符串。您错过了newArray.join;中使用的不必要的空间;。这不是必需的,字符串可以直接连接。我真的很喜欢使用计数器的想法——这很有意义。但是什么是c=>?这是从哪里来的?这是一个ES6。当然,但是c-c在前面没有声明为变量?还是应该是计数器?这是一个标准的回调函数。你可以把它写成函数{return newWords[counter++]| | |}。我想和你一样,string.replace应该比string.split和诸如此类的东西更好。诸如此类的东西真的很喜欢使用计数器——这很有意义。但是什么是c=>?这是从哪里来的?这是一个ES6。当然,但是c-c在前面没有声明为变量?还是应该是计数器?这是一个标准的回调函数。你可以把它写成函数{return newWords[counter++]| | |}。我想和你一样,string.replace应该总是比string.split和诸如此类的简单答案更好——我喜欢这个。所以这个箭头函数基本上代替了for-loop。最简单的答案——我喜欢这个。这个箭头函数基本上代替了for循环。