Javascript 如果数组中存在对应的对象,则无法设置条件以仅执行函数
正是这种特殊的代码不起作用。我知道年龄差异的作用。被认为是问题所在的一条线是if条件没有按照我的意愿发挥作用:Javascript 如果数组中存在对应的对象,则无法设置条件以仅执行函数,javascript,Javascript,正是这种特殊的代码不起作用。我知道年龄差异的作用。被认为是问题所在的一条线是if条件没有按照我的意愿发挥作用: var ages = []; for (var person in byName){ if (typeof byName[person.mother] != "undefined") ages.push(ageDifference(person)); } console.log(ages); byName是一个名称映射对象,具有多个属性,其中只有两个与出生和母亲相关。即
var ages = [];
for (var person in byName){
if (typeof byName[person.mother] != "undefined")
ages.push(ageDifference(person));
}
console.log(ages);
byName是一个名称映射对象,具有多个属性,其中只有两个与出生和母亲相关。即:
我正试图建立一系列的人和他们母亲之间的年龄差异。由于其中一些人在母亲属性中指定了母亲,而这些母亲在封闭对象中不作为对象存在,因此循环在这些人身上时应跳到下一次迭代。这似乎是症结所在,因为当我按原样运行代码时,nothing会被推送到数组中,如果我去掉条件,我预期会收到一个错误,或多或少地说,当对象被传递到ageDifference时,所声明的对象没有生成这样的属性,因为该对象不存在 我猜你用错了方法,让我们试试
{
name: "Philibert Haverbeke"
sex: "m"
born: 1907
died: 1997
father: "Emile Haverbeke"
mother: "Emma de Milliano"
}
当您发现这样的问题时,我建议您最好在怀疑的地方添加console.log,进行简单的详细跟踪
例如,您怀疑IF条件,然后通过添加跟踪日志来确保其正常工作
for (var name in byName){
var person = byName[name];
if (typeof byName[person.mother] != "undefined")
ages.push(ageDifference(person));
}
一旦你发现了问题,你就可以删除这些痕迹以获得更好的性能。我相信答案就在这篇文章中
for (var name in byName){
var person = byName[name];
if (typeof byName[person.mother] != "undefined")
ages.push(ageDifference(person));
}
var ages = [];
for (var person in byName){
console.log( ["Looping -> ", person] )
console.log( "TypeOf mother = " + (typeof byName[person.mother]) )
if (typeof byName[person.mother] != "undefined"){
console.log( "Mother Exists!");
ages.push(ageDifference(person));
}else{
console.log( "Mother Not exists!");
}
}
console.log(ages);