【发布时间】:2017-08-20 14:25:23
【问题描述】:
我正在尝试从数组中过滤出元素,直到一个特定的字符串,在这种情况下是我通过这个变量获得的日期名称(周一、周二、周三等):
var day = new Date(reservation.startDate);
我有一个元素数组,我正在使用push() 方法将它们添加到数组中。
这是数组:
console.log(JSON.stringify(arrayData, null, 4))
[
"<b>Mon</b>",
"<b>AUT14</b>",
"<b>KL25AB55200-3001</b>",
"<b>Mon</b>",
"<b>AUT15</b>",
"<b>KC23DK20010-3003</b>",
"<b>Tue</b>",
"<b>TI14</b>",
"<b>KL04BT10110-3001</b>",
"<b>Tue</b>",
"<b>AUT15</b>",
"<b>KL25AB10451-3001</b>",
"<b>Tue</b>",
"<b>AUT13</b>",
"<b>AUT13</b>",
"<b>KL25AD10000-14</b>",
"<b>Tue</b>",
"<b>ASR14</b>",
"<b>Wed</b>",
"<b>TI14</b>",
"<b>IPS16</b>",
"<b>A800BD65-3001</b>",
"<b>Wed</b>",
"<b>TI14</b>",
"<b>KL04BT10110-3001</b>",
"<b>Wed</b>",
"<b>AUT15</b>",
"<b>KL25AB55200-3002</b>",
"<b>Thu</b>",
"<b>AUT16</b>",
"<b>KL25AB10250-3001</b>",
"<b>Thu</b>",
"<b>TI14</b>",
"<b>IPS16</b>",
"<b>A800BD65-3001</b>",
"<b>Thu</b>",
"<b>TI13</b>",
"<b>TI14</b>",
"<b>KL25AB10300-3001</b>"
]
如果我想打印出 only 包含“Mon”的数据,我使用:
if (day.toString().indexOf("Mon") >= 0) {
document.getElementById("Monday").innerHTML = arrayData.join("");
}
但是,例如,如果我在星期三使用相同的方法,我会从 星期一、星期二 到星期三获得数据,这并不理想,因为我只想要周三的数据。
if (day.toString().indexOf("Wed") >= 0) {
document.getElementById("Wednesday").innerHTML = arrayData.join("");
}
那么有没有一种有效的方法来从数组中间挑选数据而不包括其他日子?
我必须使用核心 JavaScript,所以不能使用任何框架。
澄清
我需要将每天的数据打印到它们自己的innerHTML 部分中。
所以我需要("Monday").innerHTML 的这些数据:
"<b>Mon</b>",
"<b>AUT14</b>",
"<b>KL25AB55200-3001</b>",
"<b>Mon</b>",
"<b>AUT15</b>",
"<b>KC23DK20010-3003</b>",
("Tuesday").innerHTML:
"<b>Tue</b>",
"<b>TI14</b>",
"<b>KL04BT10110-3001</b>",
"<b>Tue</b>",
"<b>AUT15</b>",
"<b>KL25AB10451-3001</b>",
"<b>Tue</b>",
"<b>AUT13</b>",
"<b>AUT13</b>",
"<b>KL25AD10000-14</b>",
"<b>Tue</b>",
"<b>ASR14</b>",
("Wednesday").innerHTML:
"<b>Wed</b>",
"<b>TI14</b>",
"<b>KL04BT10110-3001</b>",
"<b>Wed</b>",
"<b>AUT15</b>",
"<b>KL25AB55200-3002</b>",
("Thursday").innerHTML:
"<b>Thu</b>",
"<b>AUT16</b>",
"<b>KL25AB10250-3001</b>",
"<b>Thu</b>",
"<b>TI14</b>",
"<b>IPS16</b>",
"<b>A800BD65-3001</b>",
"<b>Thu</b>",
"<b>TI13</b>",
"<b>TI14</b>",
"<b>KL25AB10300-3001</b>"
请注意数据每天都在变化,所以我是否应该过滤掉其他日期以及我不想包含在 innerHTML 中的数组中的数据? p>
【问题讨论】:
-
arrayData的实际格式是什么?从您的示例中不清楚。您打印出的每一行是否都是一个元素,而逗号是该元素文本的一部分?还是用逗号分隔的元素和换行符不重要 - 换句话说,打印输出中的每一行是三个或有时是四个连续的数组元素?如果是后者,这似乎是一种非常尴尬的数据格式。您是否可以选择更改此格式以使其更易于使用? -
@MichaelGeary 元素用逗号分隔
-
你被这种格式卡住了,无法更改?真是一团糟!我认为打印输出中的行代表数组元素的逻辑分组,您想在其中选择其中一个组并根据行中的第一项执行某些操作?你如何决定小组的起点和终点?有些组中有三个元素,有些则有四个。您的某些包含日期名称的元素末尾有
<br/>,而其他元素则没有。在某些情况下,组中的最后一个元素缺少其</b>结束标记。您的第一步必须是清理这些数据。 -
顺便说一句,以备将来参考(实际上我建议用这个来编辑您的问题),最好使用
console.log( JSON.stringify(arrayData,null,4) )来明确表示您的数据,这样人们就不会对其感到困惑实际格式。 -
@MichaelGeary 谢谢你的信息。我同意这确实是一团糟,但不幸的是,这是我必须处理的问题
标签: javascript arrays string filter element