【问题标题】:Concat array into one array (JS or Lodash)将数组合并为一个数组(JS 或 Lodash)
【发布时间】:2017-02-22 12:24:38
【问题描述】:

输入:

var array1 = ["12346","12347\n12348","12349"];

步骤:

\n 替换为',' 并添加到列表中。

输出:

var array2 = ["12346","12347","12348","12349"];

我尝试了以下逻辑,但没有达到输出。好像少了点什么。

var array2 = [];

_.forEach(array1, function (item) {               
       var splitData = _.replace(item, /\s+/g, ',').split(',').join();
       array2.push(splitData);
});

我的代码输出:

["12346","12347,12348","12349"]

【问题讨论】:

    标签: javascript lodash


    【解决方案1】:

    你可以用换行符'\n' 加入它,然后用换行符分割它以获得结果。

    var array= ["12346", "12347\n12348", "12349"],
        result = array.join('\n').split('\n');
    
    console.log(result);

    【讨论】:

    • 好主意最好用:)
    • 精湛...解决方案对我有用...非常感谢。
    • 我们可以避免重复吗?如果输入有一些重复,如var array= ["12346", "12347\n12348", "12349", "12348" ]
    • 那么你需要一些类似array = [...(new Set(array))]的方法,或者ES5中的等价方法
    • @AnandSomani 您可以参考以下帖子删除重复项:stackoverflow.com/questions/9229645/…
    【解决方案2】:

    如果您使用的是 lodash,则应用 flatmap 将是最简单的方法:

    var array1 = ["12346", "12347\n12348", "12349"];
    var array2 = _.flatMap(array1, (e) => e.split('\n'));
    
    console.log(array2);
    //=> ["12346", "12347", "12348", "12349"]
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

    【讨论】:

      【解决方案3】:

      @Nina 的替代方法是使用 Array.push.applystring.split(/\n/)

      var array= ["12346","12347\n12348","12349"];
      var result = []
      
      array.forEach(function(item){
         result.push.apply(result, item.split(/\n/))
      })
      
      console.log(result);

      【讨论】:

        猜你喜欢
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-16
        • 2015-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多