亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

還有另一種方法來查找并返回數組的對象嗎?

還有另一種方法來查找并返回數組的對象嗎?

忽然笑 2022-07-08 18:13:42
這是我的代碼:https ://repl.it/@OllySmith1/DaringSaltyText-1 ;即使我運行 searchContact(),它也會返回正確的答案,但仍然會拋出此錯誤。順便說一句,在這種情況下,有沒有辦法在數組中搜索對象?
查看完整描述

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();


查看完整回答
反對 回復 2022-07-08
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

首先:第 116 行必須是{contacts[i.name]}.

那么你的錯誤在第 95 行。你從i=0until迭代i <= contacts.length。如果您有 1 個聯系人,i=0是您的第一個聯系人。i=1那么就沒有價值了。

所以你必須迭代到 for (var i = 0; i < contacts.length; i++)


查看完整回答
反對 回復 2022-07-08
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

您需要警惕contacts空數組的情況。

空數組的索引為零將是undefined。嘗試檢查該值的屬性將引發錯誤。

解決方案是在您檢查聯系人數組時設置一個警衛。

例如:

if(!contacts.length) return


查看完整回答
反對 回復 2022-07-08
  • 3 回答
  • 0 關注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號