2016-10-26 13 views
-1

説明: "greetCustomers"という関数を作成します。キー値の値を、それを含むオブジェクトキーに割り当てる方法を教えてください。

「greetCustomers」は、顧客がレストランにアクセスした回数に基づいて挨拶を返します。 customerDataオブジェクトを参照してください。

挨拶は、予約時の名前によって異なる必要があります。

ケース1 - 不明顧客(名前はcustomerDataに存在しない):

VAR出力= greetCustomer( 'テランス'); console.log(出力); // - > 'ようこそ!これは初めてですか?

ケース2 - 一度だけ訪問した顧客( '訪問' の値が1である):

VAR出力= greetCustomer( 'ジョー'); console.log(出力); // - > 'ようこそ、ジョー!あなたが初めて私たちを気に入ったことをうれしく思います!

ケース3 - リピート顧客( '訪問' の値が1より大きい):

VAR出力= greetCustomer( 'キャロル')。 console.log(出力); // - > 'ようこそ、ジョー!お会いできてうれしいです!

メモ:*関数では、訪問数を更新するためにcustomerDataオブジェクトを変更しないでください。

var customerData = { 
'Joe': { 
    visits: 1 
    }, 
'Carol': { 
    visits: 2 
    }, 
'Howard': { 
    visits: 3, 
    }, 
'Carrie': { 
    visits: 4 
    } 
    }; 

は、ここに私のコードです:

function greetCustomer(firstName){ 
var greeting = '' 

    for (var keys in customerData){ 
     for (var k in customerData[keys]) 

    if (customerData[keys][k] < 0) greeting = 'Welcome! Is this your first time?' 
    else if (customerData[keys][k] === 1) greeting = "Welcome back, " + firstName + "! We're glad you liked us the first time!" 
    else if (customerData[keys][k] >= 2) greeting = "Welcome back, " + firstName + "! So glad to see you again!" 
     } 

    return greeting 
    } 
greetCustomer("Carol") 

ないのはなぜこのパスケース1。名前にアクセスして訪問数を割り当てるか、関連させるより良い方法はありますか?

答えて

2

あなただけの彼らの最初の名前で検索、オブジェクト全体を反復処理する必要はありません。

var customerData = { 
 
    'Joe': { 
 
    visits: 1 
 
    }, 
 
    'Carol': { 
 
    visits: 2 
 
    }, 
 
    'Howard': { 
 
    visits: 3, 
 
    }, 
 
    'Carrie': { 
 
    visits: 4 
 
    } 
 
}; 
 

 
function greetCustomer(firstName) { 
 
    var greeting = ''; 
 
    if (!customerData[firstName]) { 
 
    // if they're not found in data, it's their first time 
 
    greeting = 'Welcome! Is this your first time?'; 
 
    } else if (customerData[firstName].visits === 1) { 
 
    greeting = "Welcome back, " + firstName + "! We're glad you liked us the first time!"; 
 
    } else if (customerData[firstName].visits >= 2) { 
 
    greeting = "Welcome back, " + firstName + "! So glad to see you again!"; 
 
    } 
 
    return greeting; 
 
} 
 

 
// tests 
 
console.log(greetCustomer("Joe")); 
 
console.log(greetCustomer("Carol")); 
 
console.log(greetCustomer("Howard")); 
 
console.log(greetCustomer("Carrie")); 
 
console.log(greetCustomer("Bob"));

1

:最後else ifは単なるelse文であり

var customerData = { 
    'Joe': { 
    visits: 1 
    }, 
    'Carol': { 
    visits: 2 
    }, 
    'Howard': { 
    visits: 3 
    }, 
    'Carrie': { 
    visits: 4 
    } 
}; 



function greetCustomer(firstName) { 
var greeting = ''; 
if (!customerData[firstName]){ 
     greeting = 'Welcome! Is this your first time?'; 
}else if (customerData[firstName].visits === 1){ 
     greeting = "Welcome back, " + firstName + '! ' + "We're glad you liked us the first time!"; 
}else{ 
     greeting = 'Welcome back, ' + firstName + '! ' + 'So glad to see you again!'; 
} 
    return greeting; 
} 

console.log(greetCustomer('Carrie')); 
//Welcome back, Carrie! So glad to see you again! 
関連する問題