Простой поиск и обновление функции записи ... что я не могу заставить работать - PullRequest
2 голосов
/ 09 января 2020

Это будет легкая работа для тех, кто знает, что они делают, но я новичок Javascript и мне просто нужна небольшая помощь. Просто пытаюсь лучше понять несколько вещей, которые я «выучил» из freecodecamp ...

У меня есть две функции, одна из них - функция поиска (с которой я работаю), а другая - функция, которая теоретически должен позволить мне обновить значение number в списке контактов, когда значение number человека равно unknown.

Так что, если name передается в функцию и совпадает с firstName в контактах, переданное number установит новое значение.

Вот мой код,

//Setup
//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(name, prop) {
    for (var i = 0; i < contacts.length; i++) { // 1
        if (contacts[i].firstName === name) { // 2
            if (contacts[i].hasOwnProperty(prop)) { // 3
                return contacts[i][prop];
            } else {
                return "No such property";
            }
        }
    }
    return "No such contact";
};

function updateRecords(name, num) {
    if (contacts["firstName"] === name && contacts["number"] === "unknown") {
        contacts["number"] = num;
    }
    return contacts;
};
// Change these values to test your function
console.log(updateRecords("Kristian", "123456709"));
console.log(lookUpProfile("Akira", "lastName"));

Функция обновления записей не изменяет свойство number. Консоль отладки просто показывает

Array(4) [Object, Object, Object, Object]
Laine

Если кто-то может сказать мне, где я ошибаюсь, я действительно ценю это ... Спасибо!

1 Ответ

3 голосов
/ 09 января 2020

contacts это не отдельные объекты. Массив объектов. И все свойства каждого объекта внутри массива, а не самого массива. Тебе нужно все oop здесь. Также вам не нужно возвращать contacts из функции, она автоматически обновит исходную contacts переменную

function updateRecords(name, num) {
   for (let i = 0; i < contacts.length; i++) {
      if (contacts[i]["firstName"] === name && contacts[i]["number"] === "unknown") {
         contacts[i]["number"] = num;
      }
   }
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...