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
}
}
}
}
}
我有这个JSON数据结构,其中军官对象有一个名为将军的数组,其中包含一般对象。一般对象具有alignment
属性,它是一个从1到100的整数。一般对象还具有bonds
属性,该属性是一个具有两个属性的对象数组:军官id和粘结强度。
我有一些游戏循环,基本上每500毫秒打一次,对于每个将军,我想检查是否有另一个将军与类似的对齐,在这种情况下,如果没有纽带存在,我想添加一个纽带到officers.general.bonds,如果已经有纽带,我想加强它。
我如何优化这段代码?
那么,sameAlignment
可以写成-
function sameAlignment (a, b) {
return ( (a.alignment > 50 && b.alignment > 50) ||
(a.alignment < 50 && b.alignment < 50) );
}
,
for ( var i = 0; i < army.officers.generals.length; i++ )
应该是
for ( var i = 0; i < army.officers.generals.length - 1; i++ )
我想
for ( var d = 0; d < army.officers.generals.length; d++ )
应该是
for ( var d = i + 1; d < army.officers.generals.length; d++ )