Javascript从数组中获取第一个值,然后跳过它
Javascript get first value from array then skip it
嘿,这就是我目前拥有的数组:
var thisDayDate = today.getDate();
var JANDays = [{day:16, timeStart:"23:00:00", timeEnd:"23:59:59"}, //It's Jan 16th Friday 11pm to
{day:17, timeStart:"00:00:00", timeEnd:"11:00:00"}, //It's Jan 17th Sat 11am
{day:22, timeStart:"23:00:00", timeEnd:"23:59:59"}, //It's Jan 22nd Friday 11pm to
{day:23, timeStart:"00:00:00", timeEnd:"07:00:00"}]; //It's Jan 23ed Sat 7am
for(var i = 0; i < JANDays.length; i++)
{
if (thisDayDate == [JANDays[i].day]) {
if (isSiteDown(JANDays[i].timeStart,JANDays[i].timeEnd)) {
showThePage();
} else {
console.log('nope');
}
}
}
我的问题是,我只想为阵列做这件事:
var JANDays = [{day:16, timeStart:"23:00:00"}, //It's Jan 16th Friday 11pm to
{day:17, timeEnd:"11:00:00"}, //It's Jan 17th Sat 11am
{day:22, timeStart:"23:00:00"}, //It's Jan 22nd Friday 11pm to
{day:23, timeEnd:"07:00:00"}]; //It's Jan 23ed Sat 7am
在上面的代码中,我只想在第一天有一个timeStart,在第二天有timeEnd等等。
第一天的时间结束应在23:59:59为静态
第二天的时间开始应在00:00:00时为静态
我不知道如何在我的IF语句循环中做到这一点,所以我们将不胜感激。
如果我理解正确。。。您想要使用以下数组:
var JANDays = [{day:16, timeStart:"23:00:00"},
{day:17, timeEnd:"11:00:00"},
{day:22, timeStart:"23:00:00"},
{day:23, timeEnd:"07:00:00"}];
而不是你现在拥有的。
在这种情况下,您可以增加索引i
以获得数组中的下一个项目,例如:
var JANDays = [{day:16, timeStart:"23:00:00"},
{day:17, timeEnd:"11:00:00"},
{day:22, timeStart:"23:00:00"},
{day:23, timeEnd:"07:00:00"}];
for (var i = 0; i < JANDays.length; i++)
{
if (thisDayDate == JANDays[i].day) {
// Notice "JANDays[i+1].timeEnd", this will get the timeEnd of the next item in the array
// (Beware: i+1 could result in undefined)
if (isSiteDown(JANDays[i].timeStart, JANDays[i+1].timeEnd)) {
showThePage();
} else {
console.log('nope');
}
}
}
编辑
我仍然不完全理解你在寻找什么,但也许可以看看这个:
var JANDays = [{day:16, timeStart:"23:00:00"},
{day:17, timeEnd:"11:00:00"},
{day:22, timeStart:"23:00:00"},
{day:23, timeEnd:"07:00:00"}];
for (var i = 0; i < JANDays.length; i++)
{
var day = JANDays[i].day;
var timeStart = JANDays[i] && JANDays[i].timeStart || "00:00:00";
var timeEnd = JANDays[i] && JANDays[i].timeEnd;
var nextTimeEnd = JANDays[i+1] && JANDays[i+1].timeEnd || "23:59:59";
if (timeEnd) { // This indicates the second day
console.log(day, timeStart, timeEnd);
} else {
console.log(day, timeStart, nextTimeEnd);
}
}
以上内容将输出到控制台,类似于:
16 "23:00:00" "11:00:00"
17 "00:00:00" "11:00:00"
22 "23:00:00" "07:00:00"
23 "00:00:00" "07:00:00"
每条线路包括:
day
,然后是timeStart
,然后是timeEnd
因此,如果一天是16,那么timeStart
和timeEnd
将分别是"23:00:00"
和"11:00:00"
。
但如果当天是17,则timeStart
和timeEnd
将分别是"00:00:00"
和"11:00:00"
。
Etc等
这里的想法是,我在循环期间检查timeEnd
是否为defined
。
也许这对你有帮助?
编辑
如果输出应该是这样的:
16 "23:00:00" "23:59:59"
17 "00:00:00" "11:00:00"
22 "23:00:00" "23:59:59"
23 "00:00:00" "07:00:00"
然后你可以去:
for (var i = 0; i < JANDays.length; i++)
{
var day = JANDays[i].day;
// The code below will check to see if timeStart and timeEnd are defined
// If they are defined then they will be used,
// otherwise use the specified value after the pipes (||)
var timeStart = (JANDays[i] && JANDays[i].timeStart) || "00:00:00";
var timeEnd = (JANDays[i] && JANDays[i].timeEnd) || "23:59:59";
if (thisDayDate == day) {
console.log(day, timeStart, timeEnd);
}
}
您可以使用map,然后检查索引,看看它是奇数还是偶数。类似这样的东西:
var JANDays = [{
day: 16,
timeStart: "23:00:00",
timeEnd: "24:59:59"
}, //It's Jan 16th Friday 11pm to
{
day: 17,
timeStart: "00:00:00",
timeEnd: "11:00:00"
}, //It's Jan 17th Sat 11am
{
day: 22,
timeStart: "23:00:00",
timeEnd: "24:59:59"
}, //It's Jan 22nd Friday 11pm to
{
day: 23,
timeStart: "00:00:00",
timeEnd: "07:00:00"
}
]; //It's Jan 23ed
var alt = JANDays.map(function(item,idx) {
if (idx % 2) {
return { day: item.day, timeStart: item.timeStart };
}
else {
return { day: item.day, timeEnd: item.timeEnd };
}
});
document.getElementById("output").innerHTML = JSON.stringify(alt);
<div id="output"></div>
试试这个:
var JANDays = [{day:16, timeStart:"23:00:00", timeEnd:"24:59:59"}, //It's Jan 16th Friday 11pm to
{day:17, timeStart:"00:00:00", timeEnd:"11:00:00"}, //It's Jan 17th Sat 11am
{day:22, timeStart:"23:00:00", timeEnd:"24:59:59"}, //It's Jan 22nd Friday 11pm to
{day:23, timeStart:"00:00:00", timeEnd:"07:00:00"}]; //It's Jan 23ed Sat 7am
var output = JANDays.map(function(item, index){
var temp = {};
temp.day = item.day;
if(index%2 == 0){
temp.timeStart = item.timeStart;
}
else{
temp.timeEnd = item.timeEnd;
}
return temp;
})
console.log(output);
相关文章:
- 而循环只设置php中输入字段中的第一个值
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- IE11中的第二个调用取消了第一个Fetch API调用
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- RxJS油门行为;立即获取第一个值
- Angular UI网格:如何通过第一个UI网格中的按钮使第二个UI网格可见
- 选择多个实例中的第一个
- 如何在调用下一个请求之前完成第一个Ajax Get请求
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- 看起来第一个console.log是'It’不太对
- 与杜兰达尔合作的第一个JavaScript项目.尝试从第三方 API 获取数据
- 文本框和选择框组合单个文本中的值(第一个tb值,然后是sb值)
- Javascript 多维数组返回第一个值,然后失败
- 如何以第二个 JavaScript 形式加载数据,然后解析为第一个 JavaScript 形式
- Javascript从数组中获取第一个值,然后跳过它
- 提取第一个url参数,然后将其放入脚本标记中
- 如何检查多维数组中是否存在字符串,然后显示数组中找到该字符串的第一个项
- AngularJS:如何加载第一个N个JSON响应,然后在页面渲染后请求rest