使用JavaScript在纯函数中的多行末尾填充
在javascript中,我必须在多行中使用padEnd()。 例如: 我的做法是: str.split(/\n/g).forEach((v)=>{v.padEnd(5,“”)}) 输出为: 未定义 有人能给我一个提示,我做错了什么,我还需要做什么?(请不要说出完整的答案) 您可以使用方法而不是forEach。最后,您可以对结果进行修改,以恢复字符串 map和forEach的主要区别在于:使用JavaScript在纯函数中的多行末尾填充,javascript,Javascript,在javascript中,我必须在多行中使用padEnd()。 例如: 我的做法是: str.split(/\n/g).forEach((v)=>{v.padEnd(5,“”)}) 输出为: 未定义 有人能给我一个提示,我做错了什么,我还需要做什么?(请不要说出完整的答案) 您可以使用方法而不是forEach。最后,您可以对结果进行修改,以恢复字符串 map和forEach的主要区别在于: map()方法创建一个新数组,其结果是对调用数组中的每个元素调用提供的函数 forEach()方法为每
- map()方法创建一个新数组,其结果是对调用数组中的每个元素调用提供的函数
- forEach()方法为每个数组元素执行一次提供的函数
str = str.split(/\n/);
str.forEach((v, idx) => {str[idx] = v.padEnd(5, ".")});
^^^^^^^^^^^^
var str='12ab\n121\n51';
str=str.split(/\n/).map((ele)=>ele.padEnd(5').join('\n');
log(““+str+”);
//不同的方法
变量str1='12ab\n121\n51';
str1=str1.split(/\n/);
str1.forEach((v,idx)=>{str1[idx]=v.padEnd(5,“.”});
控制台日志(str1)代码>为什么使用forEach()无法获得所需的输出?答案已更新。当map工作并详细描述每个元素时,forEach在每个数组元素上循环。您可以在更新的代码片段中看到差异。+1-我认为如果您使用“
作为填充字符,则.map()
的演示会更清晰,就像您在forEach
示例中所做的那样。此外,您不需要splitregex上的/g
标志;split已经作用于整个字符串:“一\nt两\ntree”.split(/\n/).map(s=>s.padEnd(7'.')).join('\n')
@StephenP您是对的。答案更新非常感谢padEnd
返回一个新字符串,但您正在丢弃它。如果要使用纯函数,请不要使用forEach
!
str = str.split(/\n/);
str.forEach((v, idx) => {str[idx] = v.padEnd(5, ".")});
^^^^^^^^^^^^