【问题标题】:Javascript - faster version - merge/concat two big arrays - unique outputJavascript - 更快的版本 - 合并/连接两个大数组 - 独特的输出
【发布时间】:2018-02-09 15:15:20
【问题描述】:

How to merge two arrays in JavaScript and de-duplicate items 文章的启发,我测试了不同变体对于大量项目的速度和可靠性。 我也想提出另一个解决问题的建议。

【问题讨论】:

    标签: javascript arrays merge unique


    【解决方案1】:

    在示例中可以尝试使用哪个函数以及何时更快。 https://dojo.telerik.com/oYuCE/4

    uniqueArray2 函数在大型项目上运行良好且快速。

    jQuery 函数 $ .unique 工作得很快,但前提是项目已排序。否则,将不会过滤重复项。 样品:

    var arr1 = ['Vijendra', 'Singh'], arr2 = ['Shakya', 'Singh']; 
    alert (JSON.stringify ($ .unique (arr1.concat (arr2))));
    

    但不过滤重复项:

    var arr1 = ['Vijendra', 'Singh'], arr2 = ['Singh,' Shakya ''];
    alert (JSON.stringify ($ .unique (arr1.concat (arr2))));
    

    过滤重复项。

    uniqueArray2 函数运行良好:

    function arrayUnique2 (array) {
    var tmpArrAss = {};
      $ .each (array, function (key, vs) {
        tmpArrAss [hashCode (vs)] = vs;
      });
      var tmpArr = new Array ();
      $ .each (tmpArrAss, function (key, vs) {
        if (vs.length> 0) {
          tmpArr.push (vs);
        }
      });
      return tmpArr;
    }
    

    但是需要一个长字符串的编码器,这里有:

    function hashCode (s) {
    return s.split ("") reduce (function (a, b) {a = ((a << 5) -a) + b.charCodeAt (0); return a & a}, 0);
    }
    

    解决了。 这样做的缺点是该函数适用于很长的字符串。

    arrayUnique2 快 20 倍。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 2017-06-18
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      相关资源
      最近更新 更多