所以我正在学习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"。
任何示例代码都受到高度赞赏,因为我对此很新。
答案 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());
编辑:将解析字符串添加到数据源数组。