【问题标题】:JS array of objects formattingJS对象数组格式化
【发布时间】:2023-03-08 14:39:01
【问题描述】:

我正在尝试使用 js-beautify 节点包设置自定义格式化程序,但在格式化对象数组时遇到了问题。我希望我的输出看起来像这样:

{
  someFunction: function() {

  },

  arr: [{
    thing: 1
  }, {
    one: 2
  }]
}

您会注意到我的大括号与另一个大括号或括号在同一行。但是,我注意到如果我的代码包含这样的格式,它的格式会不正确:

// Formatted input
{
    someFunction: function() {

    },

    arr: [{
        thing: 1
    },
     {
        one: 2
    }]
}

// Formatted output
{
    someFunction: function() {

    },

    arr: [{
            thing: 1
        },
        {
            one: 2
        }
    ]
}

我认为"brace_style": "end-expand" 会是我想要的,但它似乎不适用于这种情况。这很奇怪,因为如果我有类似下面的内容,它会在the online beautifier 上正确格式化:

{
    someFunction: function() {

    },

    arr: [{
        thing: 1
    },     {
        one: 2
    }]
}

有人对如何获得我想要的输出有任何建议吗?我假设我可以设置一些配置属性。另外,如果有人有更好的节点包或格式化程序,我也会很乐意。

编辑 从 Adnan Sharif 的第一个建议来看,"preserve_newlines": true 似乎是发生这种情况的原因,但如果我删除它,那么我会丢失所有的换行符......如果我不能保留我的所有内容,这似乎有点麻烦由于大括号格式而产生的换行符。

【问题讨论】:

    标签: javascript code-formatting js-beautify


    【解决方案1】:

    我已经用 JSON 选项粘贴了你的 JSON 字符串 -

    {
      "indent_size": "2",
      "indent_char": " ",
      "max_preserve_newlines": "-1",
      "preserve_newlines": false,
      "keep_array_indentation": false,
      "break_chained_methods": false,
      "indent_scripts": "keep",
      "brace_style": "collapse",
      "space_before_conditional": false,
      "unescape_strings": false,
      "jslint_happy": false,
      "end_with_newline": false,
      "wrap_line_length": "0",
      "indent_inner_html": false,
      "comma_first": false,
      "e4x": false,
      "indent_empty_lines": false
    }
    

    如你所说!

    您可以根据需要尝试调整上述设置。谢谢!

    【讨论】:

    • 所以看来我的问题在于属性"preserve_newlines": true,如果我将其切换为false,是的,这可行,但是我失去了所有的换行符......
    猜你喜欢
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多