2017-02-27 83 views
3

所以我正在學習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" 

我想要什麼:

的函數給出「約翰,星期一」或「約翰的輸入時, 27/02/2017「,將返回」21:00「。

任何示例代碼是高度讚賞,因爲我是相當新的這一點。

+0

Err ...那麼您的問題「我如何將日期轉換爲一週中的哪一天?」 – Ouroborus

+0

哈哈沒有抱歉,我會編輯的問題,我可能已經添加了太多,我的問題是我如何獲得輸入的值,如果我把「約翰」和日期,該函數應該返回相關行的時間與名稱,約翰,蒙應該返回21:00 – Cyb3rHac3r

+0

你怎麼知道數據從2017年二月27日開始?或者你剛剛獲得星期幾並從陣列中獲得價值? – Jules

回答

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

假設您可以將數據行轉換爲數組(請注意,我改變了分鐘測試)

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()); 

編輯:添加解析字符串數據源陣列。

+0

嘿朱爾斯,我試過你的代碼,但我似乎無法使它工作,不同的錯誤不斷彈出,我會盡我所能來修復它,但是,你可以採取另一種眼光?,我使用jsfiddle的方式。 – Cyb3rHac3r

+0

@ Cyb3rHac3r,錯誤信息是什麼?你能分享你的jsfiddle嗎? – Jules