【问题标题】:how to convert an array to string including space elements in JS?如何将数组转换为包含JS中空间元素的字符串?
【发布时间】:2021-05-11 04:14:00
【问题描述】:

我想将此数组转换为字符串,包括 javascript 中的空格元素。返回后不显示空格。

let results = ['Hello',' ',' ',' ','EveryOne',' ',' ',' ','My',' ','Name',' ','is',' ','X'];

const result = () => 
{
    for(let i = 0; i<results.length; i++)
    {
        return results;
    } 
 } 

result();

// Expected Output : "Hello   EveryOne   My  Name is X";

【问题讨论】:

  • 也许还会在您的问题中显示预期的输出。因为如果你想要重复的空间,那就不完全清楚
  • 好的,我看到你显示了预期的输出。您可以使用标准数组函数进行连接
  • 您的代码存在语法错误,难以为您提供帮助。请修复语法错误。但简短的回答是:只需使用join("")。这不会删除空格。

标签: javascript arrays reactjs string ecmascript-6


【解决方案1】:

您可以将数组转换为字符串,然后按照以下内容拆分逗号:results.toString().split(',').join('');

【讨论】:

    【解决方案2】:

    你需要将for-loop中的元素串联起来:

    const result = (results=[]) => {
      let str = '';
      for(let i = 0; i < results.length; i++) {
        str += results[i];
      } 
      return str;
    } 
     
    console.log( result(['Hello',' ',' ',' ','EveryOne',' ',' ',' ','My',' ','Name',' ','is',' ','X']) );

    使用.join的另一种方式:

    const result = (results=[]) => {
      return results.join('');
    } 
     
    console.log( result(['Hello',' ',' ',' ','EveryOne',' ',' ',' ','My',' ','Name',' ','is',' ','X']) );

    【讨论】:

    • 但是 OP 似乎想要它出现的重复空白。不知道为什么,但似乎是想要的结果,即使标记之间的字符串结果中包含两个或多个空格
    【解决方案3】:

    使用Array.prototype.join 和空字符串作为分隔符:

    const result = () => {
        let results = ['Hello',' ',' ',' ','EveryOne',' ',' ',' ','My',' ','Name',' ','is',' ','X'];
        return results.join('')
     } 
     
     console.log(result())

    【讨论】:

    • 如果您不关心重复的空格,那么这里是@SilentStorm 的解决方案
    【解决方案4】:

    由于reactjs 标记在那里,我假设问题呈现。使用 HTML 实体 ' ',它应该像 sn-p 一样正确显示。

    const Component = () => {
      let results = [
        "Hello",
        " ",
        " ",
        " ",
        "EveryOne",
        " ",
        " ",
        " ",
        "My",
        " ",
        "Name",
        " ",
        "is",
        " ",
        "X",
      ];
      return (
        <div>
          {" "}
          {results.map((word) => (
            word === ' ' ? <span>&nbsp;</span> : <span> { word } </span>
          ))}{" "}
        </div>
      );
    };
    
    ReactDOM.render(<Component />, document.getElementById("app"));
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
    
    
    <div id="app"> </div>

    【讨论】:

      【解决方案5】:
       let result = arr.filter(item => {
          if (item !== " "){
              return item
          };
        });
        console.log("result",result)
      

      【讨论】:

      • 在 StackOverflow 上添加解释为什么你的解决方案应该有效是一种很好的做法。
      • 答案很棒。但对于最佳实践,请提供解释。您只发布代码会使 OP 和未来的 commers 复制并粘贴您的答案,而不了解答案背后的逻辑。请提供一些解释的答案。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多