Javascript 如何根据几条规则筛选数组
我以以下数据集为例:Javascript 如何根据几条规则筛选数组,javascript,Javascript,我以以下数据集为例: const labels = [ ['Wed', '11 PM'], ['Thu', '12 AM'], ['Thu', '1 AM'], ['Thu', '2 AM'], ['Thu', '3 AM'], ['Thu', '4 AM'], ['Thu', '5 AM'], ['Thu', '6 AM'], ]; 我试图根据数据数组的大小将其过滤,每N小时保留一次,用空字符串替换其他字符串。然后我试着只保留有时间的一天的第一个实例 期望输出
const labels = [
['Wed', '11 PM'],
['Thu', '12 AM'],
['Thu', '1 AM'],
['Thu', '2 AM'],
['Thu', '3 AM'],
['Thu', '4 AM'],
['Thu', '5 AM'],
['Thu', '6 AM'],
];
我试图根据数据数组的大小将其过滤,每N小时保留一次,用空字符串替换其他字符串。然后我试着只保留有时间的一天的第一个实例
期望输出:
[
['Wed', '11 PM'],
['', ''],
['Thu', '1 AM'],
['', ''],
['', '3 AM'],
['', ''],
['', '5 AM'],
['', ''],
];
我试图用一个简单的for循环来完成,并检查前一个数组项的日期是否与迭代中当前的一天匹配,但这不起作用,因为它会使一个字符串为空,那么下一个将与空白字符串而不是原来的日期值进行比较。p> 我想我需要跟踪循环之外某处的第一个实例,然后与之进行比较,这样就不会改变原始数组了
const labels = [
['Wed', '11 PM'],
['Thu', '12 AM'],
['Thu', '1 AM'],
['Thu', '2 AM'],
['Thu', '3 AM'],
['Thu', '4 AM'],
['Thu', '5 AM'],
['Thu', '6 AM'],
];
// Want to keep every nth hour, make others empty strings
// Want to keep only the first instance of a day name that has a time and change the rest of the day names to be empty strings
// Desired output:
// [
// ['Wed', '11 PM'],
// ['', ''],
// ['Thu', '1 AM'],
// ['', ''],
// ['', '3 AM'],
// ['', ''],
// ['', '5 AM'],
// ['', ''],
// ];
function hoursLabelInterval(hours) {
if (hours <= 6) {
return 1;
} else if (hours <= 12) {
return 2;
} else if (hours <= 24) {
return 4;
} else if (hours <= 36) {
return 6;
} else if (hours <= 48) {
return 8;
} else if (hours <= 60) {
return 10;
} else if (hours <= 72) {
return 12;
} else {
return 24;
}
}
function formatXLabels(labels, hoursToSkip) {
let result = labels;
for (let i=1; i<labels.length; i++) {
if (i%hoursToSkip !== 0) {
result[i][1] = '';
}
}
console.log(result);
}
formatXLabels(labels, hoursLabelInterval(labels.length));
const标签=[
[‘星期三’、‘晚上11点’],
[星期四上午十二时],,
[星期四上午一时],,
[星期四上午二时],,
[星期四上午三时],,
[星期四上午四时],,
[星期四上午五时],,
[星期四上午六时],,
];
//想保持每N小时一次,让其他人成为空字符串吗
//希望只保留具有时间的日期名称的第一个实例,并将其余日期名称更改为空字符串吗
//期望输出:
// [
//[‘星期三’、‘晚上11点’],
// ['', ''],
//[星期四上午一时],,
// ['', ''],
//['',凌晨3点],
// ['', ''],
//['',上午5点],
// ['', ''],
// ];
功能小时标签间隔(小时){
如果(小时可以这样做:
const标签=[
[‘星期三’、‘晚上11点’],
[星期四上午十二时],,
[星期四上午一时],,
[星期四上午二时],,
[星期四上午三时],,
[星期四上午四时],,
[星期四上午五时],,
[星期四上午六时],,
];
让currentDay='';
const newLabels=labels.map((label,i)=>{
如果(i%2==0){
如果(标签[0]!==当前日期){
currentDay=标签[0];
返回[标签[0],标签[1]]
}
返回['',标签[1]]
}
返回['',]
});
console.log(newLabels);
可以执行以下操作:
const标签=[
[‘星期三’、‘晚上11点’],
[星期四上午十二时],,
[星期四上午一时],,
[星期四上午二时],,
[星期四上午三时],,
[星期四上午四时],,
[星期四上午五时],,
[星期四上午六时],,
];
让currentDay='';
const newLabels=labels.map((label,i)=>{
如果(i%2==0){
如果(标签[0]!==当前日期){
currentDay=标签[0];
返回[标签[0],标签[1]]
}
返回['',标签[1]]
}
返回['',]
});
console.log(newLabels);
如果在应答编辑器中单击
,则可以将此代码剪切/粘贴到“堆栈片段”中要使其在页面的此处可运行,任何人都可以快速查看日志results@charlietfl谢谢,我们一定会更频繁地使用它!如果您在answer editor中单击
,您可以将此代码剪切/粘贴到“堆栈片段”中要使其在页面的此处可运行,任何人都可以快速查看日志results@charlietfl谢谢,我们一定会更频繁地使用它!