在设置条件以仅在数组中存在相应对象时才执行函数时遇到问题
Having trouble setting condition to only perform a function if a corresponding object exists INSIDE AN ARRAY
var ages = [];
for (var person in byName){
if (typeof byName[person.mother] != "undefined")
ages.push(ageDifference(person));
}
console.log(ages);
正是这种特定的代码将不起作用。 我知道该功能ageDifference
有效。 被认为是问题的行是 if 条件无法按我的预期运行:
function ageDifference(person){
var ageDiff = person.born - byName[person.mother].born;
return ageDiff;
}
byName
是一个具有多个属性的名称映射对象,其中只有 2 个相关是 born
和 mother
。 即:
{
name: "Philibert Haverbeke"
sex: "m"
born: 1907
died: 1997
father: "Emile Haverbeke"
mother: "Emma de Milliano"
}
我试图建立一系列人与母亲之间的年龄差异。 由于其中一些在 mother 属性中指定了母体,这些母体在封闭对象中不作为对象存在,因此循环在这些人身上时应跳到下一次迭代。 这似乎是症结所在,因为当我按原样运行代码时,没有任何内容被推送到数组中,如果我删除条件,我或多或少会收到一个错误,说当对象传递给 ageDifference 时,没有这样的属性诞生于所述对象(因为该对象不存在!
我猜你用错了for
,让我们试试。
for (var name in byName){
var person = byName[name];
if (typeof byName[person.mother] != "undefined")
ages.push(ageDifference(person));
}
当您发现这样的问题时,我能建议的最好的方法是通过在怀疑的任何地方添加console.log
来进行简单的详细跟踪。
例如,您怀疑IF
条件,然后通过添加跟踪日志来确保它工作正常。
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);
一旦发现问题,您就可以删除这些痕迹以获得更好的性能。
相关文章:
- 对具有ui typeahead的对象中的值执行orderBy
- Javascript:对回调创建的对象执行方法
- 执行过滤对象数组的方法
- 如何指定在执行控制台时要显示的属性.log对象
- JS 函数将对象作为输入,并返回一个对象,该对象对作为参数传递的对象执行操作
- 如何在javascript中同时对多个对象执行多个函数
- jQuery droppable 对象执行 destroy() 但抛出错误
- 如何在 javascript 中对自定义对象执行小于/大于比较
- 如何在GWT(或Java AWT Swing)中使用相同的事件处理程序对相同类型的多个对象执行相同的功能
- 我得到了一个“;意外的令牌“;尝试对简单对象执行JSON.parse时出错
- 把手中嵌套的辅助对象(执行顺序)
- 如何使用Electron中的BrowserWindow对象执行脚本
- 可以't对ImageData对象执行多个操作
- 如何在Google Apps Script中使用逻辑仅对数组中的日期对象执行操作
- Emberjs -循环遍历数组'each',但每三个对象执行不同的操作
- 对多个对象执行jQuery when().done()
- js对对象执行操作,而不是数组
- 一个jQuery插件,可以对一个jQuery对象执行多个操作
- 对多个对象执行单个函数
- ajax基于从URL发送的Json对象执行操作