【发布时间】:2021-10-05 14:22:47
【问题描述】:
我编写了一个函数,它将从联系人列表(对象数组)中返回具有最多孩子的名称,但它仅限于我在 if 语句中包含的元素数量。无论大小如何,如何让它遍历此联系人列表中的所有元素?我尝试创建一个 for of 循环,但它不允许我使用计数器“I”对元素进行排序,返回错误。
提前致谢!
let contacts = [
{
name: 'John',
children:
[
{ name: 'Mary', age: 11 }
]
}, {
name: 'Franklin',
children:
[
{ name: 'Susy', age: 7 },
{ name: 'Tom', age: 5 }
]
}
];
function p_w_m_children(arr){
let person_w_most_children = "";
arr.sort((elem_1, elem_2) => {
if (elem_1.children > elem_2.children){
person_w_most_children = elem_1.name;
}else{
person_w_most_children = elem_2.name;
}
});
return person_w_most_children;
}
console.log("The person who has most children is " + p_w_m_children(contacts)+ ".");
【问题讨论】:
-
首先,您的比较 (
elem_1.children > elem_2.children) 无效。使用该 sn-p 不会比较两个children数组的长度。相反,您需要使用elem_1.children.length > elem_2.children.length。我不确定 100%,但我相信您当前的解决方案会将数组隐式转换为字符串并按字母顺序排序。
标签: javascript arrays object javascript-objects