匹配数组和返回值

时间:2017-02-27 01:43:49

标签: javascript jquery arrays

所以我正在学习JavaScript / jQuery,我需要一些帮助。

基本上我有一个数组,从下面的Excel表格转换而来

Name    Sun  Mon    Tues    Wed     Thurs   Fri    Sat
John    x   21:00   21:00   21:00   21:00   21:00   x
Smith   x   19:45   19:45   19:45   19:45   19:45   x
Paul    x   19:45   19:45   19:45   19:45   19:45   11:00
"Name", "Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat", 
"John", "x", "21:00", "21:00", "21:00", "21:00", "21:00", "x", 
"Smith", "x", "19:45", "19:45", "19:45", "19:45", "19:45", "x", 
"Paul", "x", "19:45", "19:45", "19:45", "19:45", "19:45", "11:00"

我想要的是什么:

给出输入" John,Monday"或" John,27/02/2017",将返回" 21:00"。

任何示例代码都受到高度赞赏,因为我对此很新。

2 个答案:

答案 0 :(得分:1)

我认为重组数据会更容易。

const data = {
  John: [
      'x',
      '21:00',
      '21:00',
      '21:00',
      '21:00',
      '21:00',
      'x',
  ],
  Smith: [
    'x',
    '19:45',
     '19:45',
    '19:45',
    '19:45',
    '19:45',
    'x',
  ],
  Paul: [
    'x',
    '19:45',
    '19:45',
    '19:45',
    '19:45',
    '19:45',
    '11:00',
  ],
}

该数组用于每天的值,因为Date.getDay()根据日期返回0..6。 (0 =星期天等)。

在JavaScript中,对象可以视为字典,您可以使用[]表示法访问它们。

const name = 'John';
const dayIndex = new Date('02/28/2017').getDay();
const result = data[name][dayIndex]; // result = 21:00

答案 1 :(得分:1)

假设您可以将数据行转换为数组(注意我更改了测试的分钟数)

    var dat = ["Name", "Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat, "John", "x", "21:00", "21:00", "21:00", "21:00", "21:00", "x", "Smith", "x", "19:45", "19:45", "19:45", "19:45", "19:45", "x", "Paul", "x", "19:45", "19:45", "19:45", "19:45", "19:45", "11:00"];

    var data = [];

    for (var i = 1; i < dat.length / 8; i++) {
        data.push(dat.slice(i * 8, (i+1) * 8 ));
    }

    function getIt(name, date) {

        var el = data.find(function (e) {
            return e[0] == name;
        });

        if (el) {
            console.debug(el[date.getDay()+1]);
        }
        else {
            console.debug("not found");
        }
    }

    getIt("John", new Date());

编辑:将解析字符串添加到数据源数组。