Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript合并数组(如果存在重复值)_Javascript - Fatal编程技术网

Javascript合并数组(如果存在重复值)

Javascript合并数组(如果存在重复值),javascript,Javascript,var arr=[[7,50],[7,60],[8,40] 如何合并此数组以获得这样的结果? [[7, 110], [8,40]]; 比方说,如果我有数百个这样的小数组被一个数组包裹,我建议您使用一个映射来存储结果,而不是一个数组。下面是一个O(n)解决方案: var arr = [[7,50], [7,60], [8,40]]; function merge_array(arr) { var map = {}; for (var i = 0;i<arr.length;i

var arr=[[7,50],[7,60],[8,40]

如何合并此数组以获得这样的结果? [[7, 110], [8,40]];


比方说,如果我有数百个这样的小数组被一个数组包裹,我建议您使用一个映射来存储结果,而不是一个数组。下面是一个O(n)解决方案:

var arr = [[7,50], [7,60], [8,40]];

function merge_array(arr) {
    var map = {};
    for (var i = 0;i<arr.length;i++) {
        if (arr[i][0] in map) {
            map[arr[i][0]] += arr[i][1];
        } else {
            map[arr[i][0]] = arr[i][1];
        }
    }

    return map;
}
var-arr=[[7,50]、[7,60]、[8,40];
函数合并数组(arr){
var-map={};
对于(var i=0;i,这里是具有数组结果的O(n)解:

function merge(arr){  

    var map = {};
    var key;

    //Constructing the map
    for ( var i = 0 ; i < arr.length ; i++ ) {
      key = arr[i][0];
      if ( typeof map[key] != 'undefined' ){
        map[key] += arr[i][1];
      } else {
        map[key] = arr[i][1];
      }
    }

    //Converting the map to an array
    var result = [];
    for ( key in map ){
       result.push( [key, map[key]] );
    } 

    return result;    
}
函数合并(arr){
var-map={};
var键;
//构建地图
对于(变量i=0;i
进行气泡排序并循环:P