Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 有没有更好的方法来编写这个函数?它已经起作用了,但我担心它没有效率 功能相同对齐(a、b){ 如果(a.对齐>50&&b.对齐>50){ 返回true; }否则,如果(a.校准_Javascript_Arrays_For Loop - Fatal编程技术网

Javascript 有没有更好的方法来编写这个函数?它已经起作用了,但我担心它没有效率 功能相同对齐(a、b){ 如果(a.对齐>50&&b.对齐>50){ 返回true; }否则,如果(a.校准

Javascript 有没有更好的方法来编写这个函数?它已经起作用了,但我担心它没有效率 功能相同对齐(a、b){ 如果(a.对齐>50&&b.对齐>50){ 返回true; }否则,如果(a.校准,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我有一个JSON数据结构,其中对象官员有一个名为generals的数组,其中包含一般对象。常规对象具有对齐属性,该属性是1到100之间的整数。常规对象还具有bonds属性,该属性是一个具有两个属性的对象数组:军官id和bond strength 我有一些游戏循环,基本上每500毫秒循环一次,对于每一个将军,我想检查是否有另一个将军有类似的排列,在这种情况下,如果没有键存在,我想添加一个键到officers.general.bonds,如果已经有了键,我想加强它 如何优化此代码?它已经工作了。那么

我有一个JSON数据结构,其中对象官员有一个名为generals的数组,其中包含一般对象。常规对象具有
对齐
属性,该属性是1到100之间的整数。常规对象还具有
bonds
属性,该属性是一个具有两个属性的对象数组:军官id和bond strength

我有一些游戏循环,基本上每500毫秒循环一次,对于每一个将军,我想检查是否有另一个将军有类似的排列,在这种情况下,如果没有键存在,我想添加一个键到officers.general.bonds,如果已经有了键,我想加强它


如何优化此代码?它已经工作了。

那么,
sameAlignment
可以写成-

function sameAlignment (a, b) {
if (a.alignment > 50 && b.alignment > 50) {
    return true;
} else if (a.alignment < 50 && b.alignment < 50) {
    return true;
} else {
    return false;
}
}

function bondStaff () {
for ( var i = 0; i < army.officers.generals.length; i++ ) { //for each general
    var general = army.officers.generals[i]; 
    for ( var d = 0; d < army.officers.generals.length; d++ ) { //loop through each general
        var general_b = army.officers.generals[d]; 
        if (sameAlignment(general, general_b) && (general.id != general_b.id)) { //if same alignment and not self
            var had_bond = false;
            for (var n = 0; n < general.bonds.length; n++) {
                var bond = general.bonds[n];
                if (bond[0] === general_b.id) {
                    bond[1]++; //if they were already bonded, strengthen the bond
                    had_bond = true;
                }
            };
            if (!had_bond) {
                var new_bond = [general_b.id, 0];
                general.bonds.push(new_bond); //if not create new bond
            }
        }
    }
}
}
功能相同对齐(a、b){
返回((a.对齐>50和b.对齐>50)||
(a.校准<50&&b.校准<50));
}
而且

for(变量i=0;i
应该是

for ( var i = 0; i < army.officers.generals.length; i++ )
for ( var d = 0; d < army.officers.generals.length; d++ )
for(var i=0;i
而且,我认为

for ( var i = 0; i < army.officers.generals.length - 1; i++ )
for(var d=0;d
应该是

for ( var i = 0; i < army.officers.generals.length; i++ )
for ( var d = 0; d < army.officers.generals.length; d++ )
for(var d=i+1;d
您是否已经通过计时或在其上运行探查器来证明代码太慢了?没有,对不起,我只是在学习编写原生JS,我想确保我走上了正确的轨道。