Вот, у вас изначально не загружен контакт , а во-вторых, вы зацикливаетесь больше, чем его массивы, тогда рабочая ссылка https://repl.it/repls/ImperturbableImperturbableAbstractions
var fs = require('fs');
var readlineSync = require('readline-sync');
var Member = require('./dataAnalyze');
const uuidv4 = require("uuid/v4");
const contacts = [];
function main() {
loadData();
showMenu();
}
function loadData() {
var data = fs.readFileSync('./data.json', { encoding: 'utf8' });
var data1 = JSON.parse(data);
contacts.push(data1) // initial push the data to contact array
}
function showContacts() {
console.log("Contact List") // add the console
for (let contact of contacts) {
console.log("Name:", contact.name, "phoneNo:",contact.phone, "Id:",contact.id); // modify the console
};
return contacts;
}
function showMenu() {
console.log('1.show contacts');
console.log('2.add contact');
console.log('3.edit contact');
console.log('4.delete contact');
console.log('5.search contact');
console.log('6.sort contact');
console.log('7.sort phone');
console.log('8.save and exit');
// loadData();
var option = readlineSync.question('> ')
switch (option) {
case '1':
showContacts();
showMenu();
break;
case '2':
addContact();
showMenu();
break;
case '3':
editContact();
showMenu();
break;
case '4':
deleteContact();
showMenu();
break;
case '5':
searchContact();
showMenu();
break;
case '6':
sortContact();
showMenu();
break;
case '7':
sortPhone();
showMenu();
break;
case '8':
saveAndExit();
Break;
default:
console.log('wrong option');
break;
}
}
function addContact() {
var name = readlineSync.question('What is your name?');
var phone = readlineSync.question('what is your phone number?');
var id = uuidv4();
var contact = new Member(name, phone, id);
contacts.push(contact);
}
function searchContact() {
showContacts();
var nameStr = readlineSync.question('Which name?');
var phoneNum = readlineSync.question('Which phone?');
for (var i = 0; i < contacts.length; i++) // remove the =, it will give error array out of bound
{
if (!nameStr || !phoneNum) { console.log('invalid Id') }
else if (contacts[i].name.match(nameStr.toLowerCase().trim())) { console.log(contacts[i]) }
else if (contacts[i].phone.toString().match(phoneNum.trim())) { console.log(contacts[i]) }
}
// var result = contacts.map(contact => {
// if(contact.name.includes(nameStr.toLowerCase().trim())){
// console.log(contact);
// }else if(contact.phone.toString().includes(phoneNum.trim())){
// console.log(contact);
// }
// })
}
function editContact() {
showContacts();
var nameStr = readlineSync.question('Which name?');
var phoneNum = readlineSync.question('Which phone?');
for (var i = 0; i < contacts.length; i++) // remove the =
{
if (!nameStr || !phoneNum) { console.log('invalid Id') }
else if (contacts[i].name.match(nameStr.toLowerCase().trim())) { contacts[i].name.split(contacts[i].name).join(nameStr) }
else if (contacts[i].phone.toString().match(phoneNum.trim())) { contacts[i].phone.toString().split(contacts[i].phone).join(nameStr) }
}
}
main();