3 回答

TA貢獻1946條經驗 獲得超3個贊
在這里,您最初沒有加載聯系人,其次,您循環的不僅僅是它的數組,然后是工作鏈接 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();

TA貢獻1798條經驗 獲得超3個贊
首先:第 116 行必須是{contacts[i.name]}
.
那么你的錯誤在第 95 行。你從i=0
until迭代i <= contacts.length
。如果您有 1 個聯系人,i=0
是您的第一個聯系人。i=1
那么就沒有價值了。
所以你必須迭代到 for (var i = 0; i < contacts.length; i++)

TA貢獻1840條經驗 獲得超5個贊
您需要警惕contacts
空數組的情況。
空數組的索引為零將是undefined
。嘗試檢查該值的屬性將引發錯誤。
解決方案是在您檢查聯系人數組時設置一個警衛。
例如:
if(!contacts.length) return
添加回答
舉報