gpt4 book ai didi

javascript - 如何根据几个规则过滤数组数组

转载 作者:行者123 更新时间:2023-12-01 00:29:41 26 4
gpt4 key购买 nike

我有以下数据集作为示例:

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 循环来执行此操作,并检查前一个数组项的日期是否与迭代中的当前日期匹配,但这不起作用,因为它会使字符串为空,然后下一个将与空白字符串而不是原始日期值进行比较。

我认为我需要跟踪循环外某处的第一个天数,然后与之进行比较,这样它就不会改变原始数组?

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 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'],
];
let currentDay = '';
const newLabels = labels.map((label, i) => {
if (i % 2 === 0) {
if (label[0] !== currentDay) {
currentDay = label[0];
return [label[0], label[1]]
}
return ['', label[1]]
}
return ['','']
});

console.log(newLabels);

关于javascript - 如何根据几个规则过滤数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58683166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com