这是解决此JavaScript练习的一种好(有效)方法吗
这是FreeCodeCamp的一个练习,我想知道这个解决方案是否足够好,或者我应该以不同的方式解决它: 练习: 我们的联系人列表中有一组代表不同人员的对象 以firstName和属性(prop)为参数的lookUpProfile函数已经为您预先编写好了 函数应该检查firstName是否是实际联系人的firstName,并且给定的属性(prop)是否是该联系人的属性 如果两者都为true,则返回该属性的“值” 如果firstName与任何联系人不对应,则返回“无此类联系人” 如果prop与任何有效属性不对应,则返回“No-this property” 解决方案:这是解决此JavaScript练习的一种好(有效)方法吗,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,这是FreeCodeCamp的一个练习,我想知道这个解决方案是否足够好,或者我应该以不同的方式解决它: 练习: 我们的联系人列表中有一组代表不同人员的对象 以firstName和属性(prop)为参数的lookUpProfile函数已经为您预先编写好了 函数应该检查firstName是否是实际联系人的firstName,并且给定的属性(prop)是否是该联系人的属性 如果两者都为true,则返回该属性的“值” 如果firstName与任何联系人不对应,则返回“无此类联系人” 如果prop与任何有
//设置
var触点=[
{
“名字”:“Akira”,
“姓氏”:“莱恩”,
“编号”:“0543236543”,
“喜欢”:[“披萨”、“编码”、“布朗尼点数”]
},
{
“名字”:“哈利”,
“姓氏”:“波特”,
“编号”:“0994372684”,
“喜欢”:[“霍格沃茨”、“魔法”、“海格”]
},
{
“名字”:“夏洛克”,
“姓氏”:“福尔摩斯”,
“编号”:“0487345643”,
“喜欢”:[“有趣的案例”,“小提琴”]
},
{
“名字”:“克里斯蒂安”,
“姓氏”:“Vos”,
“编号”:“未知”,
“喜欢”:[“Javascript”、“游戏”、“狐狸”]
}
];
//解决方案
函数lookUpProfile(firstName,prop){
var checkName=“”;
对于(变量i=0;i lookUpProfile(“夏洛克”,“喜欢”)
一个更快的解决方案是对数组使用find
函数。比如:
var person = contacts.find(function(contact) {
return contact.firstName === firstName;
});
if (!person) {
return 'No such contact';
}
if (!person[prop]) {
return 'No such property';
}
return person[prop];
学习/了解所有可用的工具和功能可能很困难,但在这种情况下,非常有用
正如在评论中所说,这将更适合于,但我想在此期间我会给你一个答案。简单的解决方案
const lookup = (firstName, prop) => {
const person = contacts.find(p => p.firstName === firstName);
if (!person) {
return 'No such contact';
}
if (!person[prop]) {
return 'No such property';
}
return person[prop];
};
const person = lookup('Kristian', 'likes');
我的解决方案是有效的,但我认为非常复杂,而且浪费资源 一个非常简单的解决方法是:
函数lookUpProfile(firstName,prop){
对于(变量i=0;i 返回“无此类联系”
这可能应该转移到这是一个有趣的问题。但是,这个网站不是问这类问题的最佳场所。堆栈溢出是专门针对不起作用的代码的。相反,你应该在Opps上发布这个问题。对不起,我甚至不知道代码审阅网页的存在。你运行过这段代码吗?筛选器返回一个数组,所以!person永远不会发生。您正在查找Aarray.prototyp.find maybe吗?这里有几个错误--筛选器应该检查联系人。firstName
而不是person。firstName
。筛选器
返回一个数组,所以以后的测试应该针对person[0]
(或者更好的方法是检查person数组中的每个项目是否有匹配的prop
)@pethel谢谢你的提示。我本来打算引用person[0],但忽略了它。find
是一个更好的选择,所以我编辑了我的代码以反映这一点。我想它将返回person[prop]
根据OP的要求,我认为您可以直接返回个人[prop]
,因为您已经检查了个人
和个人[prop]
是否存在!