Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays - Fatal编程技术网

从数组中优化对,对的总和是JavaScript中的随机值

从数组中优化对,对的总和是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

我尝试了下面的代码来打印数组中的对,对和是随机值。但是在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 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;ilog(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,非常棒的先生。