javascript - 将数组与字符串进行匹配

标签 javascript arrays

我想编写简单的脚本来显示生日和命名日祝贺。目标是

1) 获取当前日期。 2)将员工数据存储在数组中。 3)如果某个员工的名字与变量nameday匹配,则写入文件祝贺。请注意,在这一天,更多的名字可以庆祝命名日,那么所有员工都必须收到祝贺。 4)生日也一样,同一天可以有更多人庆祝生日。 5) 如果姓名/日期与我们的员工名单不匹配,则不执行任何操作。

这是我写的

var today = new Date();
var dayMonth = new Date();
var day = today.getDate();
var month = today.getMonth()+1;
var year = today.getFullYear();

today = day +'. '+ month+'. '+ year;
dayMonth = day +'. '+ month+'.';

var employees = [
  ["Frank", "Jagger", "6. 10.", "1984"],
  ["Ringo", "Lennon", "6. 10.", "1983"],
  ["John", "Star", "4. 10", "1962"],
  ["Mick", "Sinatra", "4. 10", "1961"]
 ];


var nameday;
var age = employees - year;
var employeesName;

switch (dayMonth) {
  case"6. 10.": nameday = "Frank, Ringo, Steve"; break;
  default: nameday = 0;
}


if (employees === nameday) {
  document.write("' + employeesName + ' and ' + employeesName + ' nameday today. Congratulation!")
}

if (dayMonth === nameday) {
  document.write("John Star is ' + age + ' tady and Mick Sinatra is ' + age + ' today. Congratulation!")
}

我知道代码的结尾是错误的,但是如何从数组中获取正确的数据?如何访问所有名字然后将其与数组匹配?

codepen http://codepen.io/anon/pen/rrpRmG?editors=0012

最佳答案

我会将您的员工数组转换为一个包含每天员工数组的对象。

然后,您可以通过获取此对象中的日期属性来获取有生日的员工列表!

其工作原理如下:

var employees = [
  ["Test", "Person", "7. 10.", "1234"],
  ["Frank", "Jagger", "6. 10.", "1984"],
  ["Ringo", "Lennon", "6. 10.", "1983"],
  ["John", "Star", "4. 10", "1962"],
  ["Mick", "Sinatra", "4. 10", "1961"]
 ];

// Create birthday overview
var birthdayOverview = employees.reduce(function(obj, employee) {
  var birthday = employee[2];
  obj[birthday] = obj[birthday] || [];
  obj[birthday].push(employee);
  
  return obj;
}, {});

// Find today's birthdays:

var today = new Date();
var currentDay = today.getDate();
var currentMonth = today.getMonth() + 1;
var currentDateFormatted = currentDay +'. '+ currentMonth+'.';

var birthdayToday = birthdayOverview[currentDateFormatted];

console.log(birthdayToday);

关于javascript - 将数组与字符串进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39893413/

相关文章:

java - 使用 For 循环掷 6 个骰子并检查所有值是否相等 - Java

javascript - 相同的代码在不同的设备上运行不同

javascript - 反转 'export2',没有找到参数

javascript - 如何在 gulp.dest() 中找到父目录的路径?

javascript - 如何使用 for 循环在 React 中的 map 上渲染标记?

java - 将单个 csv 对象存储到数组中

javascript - 为什么这是无限循环?

java 将一个数组除以它的元素

javascript - 如何在响应中将 div 移动到另一个 in 中?

javascript - 打包的 Electron 应用程序找不到本地模块