从数组中优化对,对的总和是JavaScript中的随机值
我尝试了下面的代码来打印数组中的对,对和是随机值。但是在JS中还有其他的优化方法吗从数组中优化对,对的总和是JavaScript中的随机值,javascript,arrays,Javascript,Arrays,我尝试了下面的代码来打印数组中的对,对和是随机值。但是在JS中还有其他的优化方法吗 var array = [1,24,10,12,11,13,23,9,15];r var value = 24; function myMthod(array,value){ var a; var b; for (var i=0; i < array.length; i++) { a = array[i]; for (var
var array = [1,24,10,12,11,13,23,9,15];r
var value = 24;
function myMthod(array,value){
var a;
var b;
for (var i=0; i < array.length; i++) {
a = array[i];
for (var j=0; j < array.length; j++) {
b = array[j]
if ( (parseInt(a) + parseInt(b)) === value && result.indexOf(a+","+b) == -1 && result.indexOf(b+","+a ) == -1 ) {
result.push( a+","+b )
}
}
}
return result
};
myMthod(array,value);
var数组=[1,24,10,12,11,13,23,9,15];R
var值=24;
函数myMthod(数组、值){
var a;
var b;
对于(var i=0;i
有没有办法提供优化?提前谢谢 首先,您需要使代码正常工作。您需要将
100
更改为值
if ( (parseInt(a) + parseInt(b)) === value && result.indexOf(a+","+b) == -1 && result.indexOf(b+","+a ) == -1 ) {
// ^^^^^
最好将其更改为不带parseInt的版本,因为您使用的是数字
if (a + b === value && result.indexOf(a + "," + b) == -1 && result.indexOf(b + "," + a) == -1) {
// ^^^^^
var数组=[1,24,10,12,11,13,23,9,15];
var值=24;
函数myMthod(数组、值){
var a,b,结果=[];
对于(var i=0;i log(myMthod(数组,值))
不需要第二个循环,当您得到一个项目时,只需检查数组中是否有value-item
:
函数对(数组、值){
var-rs=[];
forEach(函数(项、索引){
if(array.includes(值-项,索引))
rs.push([项目,价值-项目]);
});
返回rs;
}
var数组=[1,24,10,12,11,13,23,9,15];
var值=24;
console.log(pairs(array,value))
你想用这段代码实现什么?输出是[“1,23”,“12,12”,“11,13”,“9,15”]嗨@Nina,我找到了解决方案,我们可以不用第二个循环吗?@Coder,不,你需要第二个循环,要么用递归方法,要么直接使用。因此,我们无法在这段代码中进行任何优化,或者我们无法找到更好的方法?是的,您可以对其进行排序,并在内部循环中尽早中断。也包括
循环,但很好。@georg,非常棒的先生。