2017-02-27 12 views
3

JavaScript/jQueryを学習していますので、何か助けが必要です。配列と戻り値の一致

は基本的に私は私が欲しいもの

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" 

の下にExcelの表から列を、変換した:

機能を「ジョン、月曜日」や「ジョン、の入力が与えられたとき27/02/2017 "は" 21:00 "を返します。

私はこれについてかなり新しいですので、どんなサンプルコードも高く評価されます。

+0

Err ...あなたの質問は「日付を曜日に変換するにはどうすればいいですか? – Ouroborus

+0

私は質問を編集します、私はあまりにも多くを追加している可能性があります申し訳ありません私は "ジョン"と日付を置く場合、私は入力の値を取得する方法は、関数は関連付けられている行から時間を返す必要があります名前、ジョン、月は21:00を返すべきです – Cyb3rHac3r

+0

データは27 feb 2017からどのように始まるのですか?またはあなたは週の日を取得し、あなたの配列からの価値を得るのですか? – 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オブジェクトでは、辞書として扱うことができ、[]表記を使用してオブジェクトにアクセスできます。

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

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

EDITアレイにデータ列に変換(Iテスト用分を変更注意してください)することができると仮定すると:追加されたデータ・ソース・アレイに文字列を解析します。

+0

ちょっと、私はあなたのコードを試してみましたが、私はそれを動作させるように思われる、別のエラーがポップアップを維持する、私はそれを修正するために最善を尽くしますが、別の外観を取ることができますか? – Cyb3rHac3r

+0

@ Cyb3rHac3r、エラーメッセージは何ですか?あなたはあなたのjsfiddleを共有できますか? – Jules

関連する問題