如何将键值中的值分配给包含它的对象键
How do I assign the value in a key value to the object key that contains it?
说明:编写一个名为"greetCustomers"的函数。
给定一个名称,"greetCustomers"根据该客户访问该餐厅的次数返回问候语。请参考customerData对象。
问候语应该是不同的,这取决于他们预订的名字。
案例1 -未知客户(名称在customerData中不存在):
var output = greetCustomer('Terrance');console.log(输出);//--> '欢迎!这是你第一次来吗?'
案例2 -只访问过一次的客户("访问量"值为1):
var output = greetCustomer('Joe');console.log(输出);//-->"欢迎回来,乔!很高兴你第一次就喜欢我们!'
案例3 -回头客:('访问量'值大于1):
var output = greetCustomer('Carol');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")
为什么不通过第一类。是否有更好的方法来访问名称并分配或关联访问次数?
您不需要遍历整个对象,只需按其名查找:
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"));
注意:最后一个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!
相关文章:
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- 响应应包含一个对象,但得到的却是GET操作的数组
- 在内部JavaScript函数中包含外部对象
- 检查数组是否包含特定对象
- 查找包含子对象MongoDb和Node.js的特定字段的文档
- 如何在我的Chrome扩展中包含外部对象
- 包含jquery对象的javascript对象
- 如何从html响应解析javascript数组(包含JSON对象作为元素)
- JavaScript:基于数组中包含的对象属性生成函数
- 变量错误消息=“ ”;中应包含的对象
- JS在我包含它后不起作用
- 将焦点设置在带有错误消息的第一个输入元素上,并将包含它的 TabStrip 选项卡设置为活动状态
- 包含不同对象的数组可以
- 为什么初始化的 JavaScript 对象不包含原型对象
- 如何在画布中制作选择框以选择它接触的任何对象,而不仅仅是它所包含的对象
- 如何连续地将拉斐尔画布(包含一些对象)从一个坐标移动到另一个坐标再到其他坐标
- 创建包含缺失对象的数组
- 为什么 ECMAScript 6 包含 Set 对象,但没有提供比较它们相等的方法
- 如何将键值中的值分配给包含它的对象键
- 如何在JavaScript中包含JSON对象,以便函数可以访问它