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]
已经在结果中,所以第二个元素已经存在。我总是说(最大的一个)