Превратить глобальный массив в локальный массив и передавать между функциями

#javascript #arrays #global #local

#javascript #массивы #глобальный #Местные новости

Вопрос:

Я очень новичок в vanilla JS, и в настоящее время я работаю над назначением, которое позволяет нам свободно создавать любой веб-сайт, который мы хотим, на основе того, что мы разбиваем весь код на функции и что мы не используем глобальные переменные.

Я почти закончил очень простую адресную книгу, которая принимает имя и номер телефона в качестве входных данных, сохраняет значения в массив и возвращает список контактов при нажатии кнопки «просмотреть все контакты». Моя единственная дилемма заключается в том, что массив является глобальной переменной, и я не уверен, как заставить это работать по-другому.

Обновить

Я добавил сюда весь код. Я работаю в скобках.

 

function init(){
document.getElementById("addButton").addEventListener("click", addContact)
document.getElementById("listButton").addEventListener("click", listContacts)
}

var contactList = [];


function getAttribute(id){
    return document.getElementById(id).value;   
}

function verifyNumber(number){
    var regExp = /^(?([0-9]{3}))?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
    var phone = number.match(regExp);
  if (phone) {
    outPut("alert","");
    return true;
  }else{
  outPut("alert","invalid phone number");
  return false;
}
}

function outPut(id,message){
    var messageBox = document.getElementById(id);
    messageBox.innerText = message;
    
}

function contact(name, number){
    this.name = name;
    this.number = number;
    return ("Name: "   this.name    "Number: "    this.number);
    }



function addContact(){
    var name = getAttribute("name");
    var number = getAttribute("number");
    if(verifyNumber(number)){
     var newContact = new contact(name,number);
     contactList.push(newContact);
     alert("Contact Successfuly Added!");
    }
    

}


function listContacts(){
    contactList.forEach(element => console.log(element));
      contactList.forEach(Object => {var newElement = document.createElement('h1');
        newElement.innerHTML = JSON.stringify(Object);
        document.body.appendChild(newElement);
                                    });
   
}```
 

Комментарии:

1. Добро пожаловать в stackoverflow 🙂 Потенциально вы могли бы использовать какое-то хранилище для управления данными. Примером является Redux. Ответ (как обычно) «это зависит». Было бы лучше, если бы вы опубликовали некоторый код, который вы уже написали (вы используете какой-то фреймворк или просто ванильный JS?), Который мы могли бы увидеть и, возможно, предложить какое-то решение.

Ответ №1:

Может быть, вместо этого использовать объект? например, пары ключ: значение, и не могли бы вы поделиться с нами фрагментом вашего кода, чтобы мы могли помочь вам лучше, спасибо