【发布时间】:2021-10-22 08:52:54
【问题描述】:
1)我有一个对象数组,称为雇员。
2) 我正在尝试在数组中找到薪水最高的员工。
3) 我正在使用 Javascript 的 reduce 函数(在函数 findHighestPaid 内部)这样做。
4) 运行 findHighestPaid(employees) 会返回“未定义”,而我预计它会返回具有属性名称的对象:Abelard。
这是我的代码。
const employees = [
{
name: "Aziz",
salary: 17050,
},
{
name: "Angela",
salary: 17060,
},
{
name: "Abelard",
salary: 17070,
},
];
function findHighestPaid(arrayOfObjects) {
let myObject = {
name: "pretendEmployee",
salary: 17040,
};
arrayOfObjects.reduce(myFunction, myObject);
function myFunction(acc, item) {
let personSalary = item.salary;
let accSalary = acc.salary;
if (Math.sign(personSalary - accSalary) > 0) {
console.log(`returning object for ${item.name}`);
return item;
} else {
console.log(`returning object for ${acc.name}`);
return acc;
}
} // end myFunction
}
当我运行 findHighestPaid(employees) 并查看控制台时,我看到了:
为 Aziz 返回对象 //(如我所料)
为安吉拉返回对象 //(如我所料)
为 Abelard 返回对象 //(如我所料)
未定义 // (哦哦!!!)
为什么reduce函数返回“undefined”?
【问题讨论】:
-
因为你忽略了“reduce”的返回值,而“findHighestPaid”没有返回任何东西。不相关但合理的缩进使代码更易于阅读。
-
我想我现在就放弃编码了。非常感谢!
-
顺便说一句,也感谢您对缩进的建议。我的借口是我所在的地方已经过了我的就寝时间!最美好的祝愿:)
标签: javascript arrays reduce