【问题标题】:Formatting a JS array into specific string将 JS 数组格式化为特定字符串
【发布时间】:2015-02-11 13:09:51
【问题描述】:

我有一个 Javascript 数组

var arr = ['[dim].[att].&[123]','[dim].[att5].&[123]','[dim4].[att].&[123]','[dim3].[att].&[123]','[dim].[att].&[222]'] 

我需要从这个数组中产生这样的输出:

var str = " 'dim'[att] = 123 || 'dim'[att] = 222 , 'dim'[att5] = 123 , 'dim4'[att] = 123 , 'dim3'[att] = 123 ";.

我首先需要将数组中的每个值按.& 拆分,然后我需要按结果数组的index 0 对所有项目进行分组。所以在这种情况下,我会将[dim].[att].&[123][dim].[att].&[222] 分组,因为[dim].[att]

现在我需要从这些项目中的每一个中拆分]. 并生成需要输出,这样[dim].[att].&[123] 变成 'dim'[att] = 123

我不想为此使用多个 for 循环。我已经准备好那个解决方案了。到目前为止,我能够对项目进行分组,但不确定如何生成所需的输出。检查此fiddle 以获得我的解决方案

【问题讨论】:

    标签: javascript jquery underscore.js handlebars.js lodash


    【解决方案1】:

    你只需要使用Array.mapArray.join

    var str = arr.map(function(s){
        var a = s.match(/\w+/g);
        return "'" + a[0] + "'[" + a[1] + "] = " + a[2];
    }).join("||");
    

    在上面,我们使用s.match(/\w+/g)将我们想要的三个部分放入一个数组中,然后以我们想要的格式返回。

    另外,最后,Array.join 被调用,|| 作为String

    DEMO

    【讨论】:

    • 感谢您的回复。查看您的解决方案,我不确定您是如何分配价值的以及s.match(/\w+/g); 的用途是什么。如果我只是运行你的解决方案,我不会得到想要的输出。
    • @SharpCoder 有点错别字。现在它应该可以工作了
    • 感谢您的帮助。你的回答是部分正确的。我投票赞成你的帮助。 || 应该只在成员来自同一个 [dim].[Att] 时应用。
    • 你能告诉我s.match(/\w+/g)线在做什么吗?
    • @SharpCoder 它正在制作dimatt123..等的数组。 \w+ 表示匹配任何字母数字字符。
    【解决方案2】:

    我在找这个;下面的代码和DEMO

    var arr = ['[dim].[att].&[123]', '[dim].[att5].&[123]', '[dim4].[att].&[123]', '[dim3].[att].&[123]', '[dim].[att].&[222]']
    
    var res = _.chain(arr)
        .groupBy(function (x) {
        return x.match(/.+?\.&/i)[0];
    })
    .map(function(y) {
        return _.map(y, function (z) {
            var a = z.match(/\w+/g);
            return "'" + a[0] + "'[" + a[1] + "] = " + a[2];
        }).join(" || ");
    })
        .value().join(", ");
    
    console.log(res)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 2017-04-09
      • 2020-02-02
      • 1970-01-01
      • 2021-05-10
      • 2012-06-13
      • 2019-08-18
      相关资源
      最近更新 更多