Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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在推送之前检查2d数组中的第二项是否重复_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

Javascript在推送之前检查2d数组中的第二项是否重复

Javascript在推送之前检查2d数组中的第二项是否重复,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我有一个最大值: var max = 666; var check = 49; 在我的数学计算过程中,我将成对的值放入一个2d数组中,如下所示 arr[i].push([a,b]); [ [ [ 1, 35 ], [ 2, 39 ], [ 3, 41 ], [ 4, 42 ], [ 5, 43 ], [ 6, 44 ], [ 7, 44 ], [ 8, 45 ], [ 9, 45 ], [ 10, 45 ], [

我有一个最大值:

var max = 666;
var check = 49;
在我的数学计算过程中,我将成对的值放入一个2d数组中,如下所示

arr[i].push([a,b]);
[ [ [ 1, 35 ],
    [ 2, 39 ],
    [ 3, 41 ],
    [ 4, 42 ],
    [ 5, 43 ],
    [ 6, 44 ],
    [ 7, 44 ],
    [ 8, 45 ],
    [ 9, 45 ],
    [ 10, 45 ],
    [ 11, 46 ],
    [ 12, 46 ],
    [ 13, 46 ],
    [ 14, 46 ],
    [ 15, 47 ],
    [ 16, 47 ],
    [ 17, 47 ],
    [ 18, 47 ],
    [ 19, 47 ],
    [ 20, 48 ],
    [ 21, 48 ],
    [ 22, 48 ],
    [ 23, 48 ],
    [ 24, 48 ],
    [ 25, 48 ],
    [ 26, 48 ],
    [ 27, 48 ],
    [ 28, 49 ],
    [ 29, 49 ],
    [ 30, 49 ]]
但是一切都非常缓慢,我想这是因为阵列非常巨大。我的arr是这样的

arr[i].push([a,b]);
[ [ [ 1, 35 ],
    [ 2, 39 ],
    [ 3, 41 ],
    [ 4, 42 ],
    [ 5, 43 ],
    [ 6, 44 ],
    [ 7, 44 ],
    [ 8, 45 ],
    [ 9, 45 ],
    [ 10, 45 ],
    [ 11, 46 ],
    [ 12, 46 ],
    [ 13, 46 ],
    [ 14, 46 ],
    [ 15, 47 ],
    [ 16, 47 ],
    [ 17, 47 ],
    [ 18, 47 ],
    [ 19, 47 ],
    [ 20, 48 ],
    [ 21, 48 ],
    [ 22, 48 ],
    [ 23, 48 ],
    [ 24, 48 ],
    [ 25, 48 ],
    [ 26, 48 ],
    [ 27, 48 ],
    [ 28, 49 ],
    [ 29, 49 ],
    [ 30, 49 ]]
如你所见,第一个元素是渐进式的,第二个元素来自calc,我的想法是:

  • 仅推动第二个元素不存在的对(最大元素)

  • 如果第二个元素等于
    check
    var,我将推动第一个元素的
    max
    var,第二个元素的
    check
    var并停止

  • 换句话说,这是预期的结果

    [ [ [ 1, 35 ],
        [ 2, 39 ],
        [ 3, 41 ],
        [ 4, 42 ],
        [ 5, 43 ],
        [ 7, 44 ],
        [ 10, 45 ],
        [ 14, 46 ],
        [ 19, 47 ],
        [ 27, 48 ],
        [ 666, 49 ]]
    
    你知道如何使它尽可能快吗?也许问题不在这里,但我认为越小越好


    J

    使用另一个数组跟踪已推送的值:

      if (!(b in already_pushed)) {
        if (b == check) {
          arr[i].push([max, b]);
          break;
        } else {
          already_pushed[b] = arr[i].length;
          arr[i].push([a, b]);
        }
      } else if (a > already_pushed[b]) {
        var index = already_pushed[b];
        arr[i][index][0] = a;
      }
    }    
    
    完整代码:

    var max=666;
    var检查=49;
    变量输入=[
    [1, 35],
    [2, 39],
    [3, 41],
    [4, 42],
    [5, 43],
    [6, 44],
    [7, 44],
    [8, 45],
    [9, 45],
    [10, 45],
    [11, 46],
    [12, 46],
    [13, 46],
    [14, 46],
    [15, 47],
    [16, 47],
    [17, 47],
    [18, 47],
    [19, 47],
    [20, 48],
    [21, 48],
    [22, 48],
    [23, 48],
    [24, 48],
    [25, 48],
    [26, 48],
    [27, 48],
    [28, 49],
    [29, 49],
    [30, 49]
    ];
    var arr=[
    []
    ];
    var已推送=[];
    var i=0;
    对于(var j=0;j已按下[b]){
    var指数=已推送[b];
    arr[i][index][0]=a;
    }
    }
    
    控制台日志(arr)当您按下
    [a,a]
    时,如何获得
    [1,35]
    ?两个数字应该相同。对不起,我弄错了,我推[a,b]如何推第一个元素?如何推送最大值?我添加了检查
    b==check
    似乎不起作用,这样我就没有最高值,只有第一个b元素。您的描述与结果不匹配。你说“只推第二个元素不存在的对”。为什么结果有
    [7,44]
    ,因为
    [6,44]
    已经在结果中,所以第二个元素已经存在。我总是说(最大的一个)