Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 发出If和Return语句_Javascript - Fatal编程技术网

Javascript 发出If和Return语句

Javascript 发出If和Return语句,javascript,Javascript,我的错在哪里?我知道这与if语句与循环的关系有关,但我无法确定。目标是让函数检查对象是否具有某个属性,然后返回该属性 //Setup var contacts = [ { "firstName": "Akira", "lastName": "Laine", "number": "0543236543", "likes": ["Pizza", "Coding", "Brownie Points"] }, {

我的错在哪里?我知道这与if语句与循环的关系有关,但我无法确定。目标是让函数检查对象是否具有某个属性,然后返回该属性

//Setup
var contacts = [
    {
        "firstName": "Akira",
        "lastName": "Laine",
        "number": "0543236543",
        "likes": ["Pizza", "Coding", "Brownie Points"]
    },
    {
        "firstName": "Harry",
        "lastName": "Potter",
        "number": "0994372684",
        "likes": ["Hogwarts", "Magic", "Hagrid"]
    },
    {
        "firstName": "Sherlock",
        "lastName": "Holmes",
        "number": "0487345643",
        "likes": ["Intriguing Cases", "Violin"]
    },
    {
        "firstName": "Kristian",
        "lastName": "Vos",
        "number": "unknown",
        "likes": ["Javascript", "Gaming", "Foxes"]
    }
];


function lookUpProfile(firstName, prop) {
// Only change code below this line
 for (var i = 0; i < contacts.length; i++) {

    if (contacts[i].firstName === firstName) {
     if (contacts[i].hasOwnProperty(prop)) {
       return contacts[i][prop];
     }   
   } 

   else if (firstName !== contacts[i].firstName) {
     return "No such contact";
   }

   return "No such property";
 } 




// Only change code above this line
}

// Change these values to test your function
lookUpProfile("Kristian", "lastName");
//设置
var触点=[
{
“名字”:“Akira”,
“姓氏”:“莱恩”,
“编号”:“0543236543”,
“喜欢”:[“披萨”、“编码”、“布朗尼点数”]
},
{
“名字”:“哈利”,
“姓氏”:“波特”,
“编号”:“0994372684”,
“喜欢”:[“霍格沃茨”、“魔法”、“海格”]
},
{
“名字”:“夏洛克”,
“姓氏”:“福尔摩斯”,
“编号”:“0487345643”,
“喜欢”:[“有趣的案例”,“小提琴”]
},
{
“名字”:“克里斯蒂安”,
“姓氏”:“Vos”,
“编号”:“未知”,
“喜欢”:[“Javascript”、“游戏”、“狐狸”]
}
];
函数lookUpProfile(firstName,prop){
//仅更改此行下方的代码
对于(变量i=0;i
您的语句
返回“无此类属性”
应该在循环的
之外。在
for
循环中,该语句在第一次迭代后终止循环

另外,如果(…
,则不需要使用
else,因为您是从
外部返回
for
循环

//设置
var触点=[
{
“名字”:“Akira”,
“姓氏”:“莱恩”,
“编号”:“0543236543”,
“喜欢”:[“披萨”、“编码”、“布朗尼点数”]
},
{
“名字”:“哈利”,
“姓氏”:“波特”,
“编号”:“0994372684”,
“喜欢”:[“霍格沃茨”、“魔法”、“海格”]
},
{
“名字”:“夏洛克”,
“姓氏”:“福尔摩斯”,
“编号”:“0487345643”,
“喜欢”:[“有趣的案例”,“小提琴”]
},
{
“名字”:“克里斯蒂安”,
“姓氏”:“Vos”,
“编号”:“未知”,
“喜欢”:[“Javascript”、“游戏”、“狐狸”]
}
];
函数lookUpProfile(firstName,prop){
对于(变量i=0;iconsole.log(lookUpProfile(“Sherlock”,“lastName”)
正如我在评论中所说,您需要移动故障条件,以便
for
循环能够在返回之前检查必要的索引:

var联系人=[{
“名字”:“Akira”,
“姓氏”:“莱恩”,
“编号”:“0543236543”,
“喜欢”:[“披萨”、“编码”、“布朗尼点数”]
},
{
“名字”:“哈利”,
“姓氏”:“波特”,
“编号”:“0994372684”,
“喜欢”:[“霍格沃茨”、“魔法”、“海格”]
},
{
“名字”:“夏洛克”,
“姓氏”:“福尔摩斯”,
“编号”:“0487345643”,
“喜欢”:[“有趣的案例”,“小提琴”]
},
{
“名字”:“克里斯蒂安”,
“姓氏”:“Vos”,
“编号”:“未知”,
“喜欢”:[“Javascript”、“游戏”、“狐狸”]
}
];
函数lookUpProfile(firstName,prop){
对于(变量i=0;ilog(lookUpProfile(“Kristian”,“lastName”);
在Mamun之前,我已经把大部分内容都写出来了,但是我想更多地谈谈这个答案和您正在做的事情

对于我的解决方案,我只是简单地将数组过滤到只有正确的名字的东西。如果您确信您的元素将有不同的名字,那么这是一个很好的解决方案,因为您应该只期望过滤数组的长度为0或1。现在,缺点是
array.filter()
在数组的整个长度上运行,甚至在我们找到我们的人之后也会继续运行。对于短数组,如示例所示,这不是问题。对于包含10000个元素的数组,我们的人是第一个搜索的,这有点性能问题

另一个问题是:如果有多个同名的人,会发生什么情况?过滤后的数组将大于1,但我们只会使用第一个结果,这可能是个问题

此外,如果你计划频繁地查找信息,你可能需要考虑使用所谓的“哈希图”——这些都是比较复杂的名字的简单事物。

是什么使一个条目与另一个条目不同?在大多数情况下,我们从数据库中获得的数据都有一些不同的ID,但在这种情况下,我们没有这些ID。然后,我们必须问自己,“Kristian Vos”与“Krtistina Paule”有什么不同(假设两者都在相同的数据中)。使用我们知道的有关对象的重要信息(在本例中为名字+姓氏),我们创建一个唯一的键来将数据存储在对象中。这样,我们只需使用映射键访问对象,就可以更快地查找内容

我的观点是:仔细考虑一下您的解决方案将要做什么,并了解小数据集通常很便宜,但由于某种原因,您的数组包含10000或100000个条目——您是否以最合理的方式处理数据

var触点