如何将键值中的值分配给包含它的对象键

How do I assign the value in a key value to the object key that contains it?

本文关键字:包含它 对象 分配 键值      更新时间:2023-09-26

说明:编写一个名为"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!