- 判断数组
validHourList中是否存在时间重叠的问题 ?
const validHourList = [
{
validHour: ['00:00', '01:00'],
},
{
validHour: ['00:00', '02:00'],
},
{
validHour: ['01:00', '10:00'],
},
];
let hasOverlap = false;
for (let i = 0; i < validHourList.length; i++) {
const currentValidHour = validHourList[i].validHour;
for (let j = i + 1; j < validHourList.length; j++) {
const nextValidHour = validHourList[j].validHour;
if (currentValidHour[0] <= nextValidHour[1] && nextValidHour[0] <= currentValidHour[1]) {
hasOverlap = true;
break;
}
}
if (hasOverlap) {
break;
}
}
if (hasOverlap) {
console.log('存在时间重叠的问题');
} else {
console.log('没有时间重叠的问题');
}
function parseTime(timeStr) {
const [hours, minutes] = timeStr.split(':').map(Number);
return hours * 60 + minutes;
}
function parseTimeSeconds(timeStr) {
const [hours, minutes, seconds] = timeStr.split(':').map(Number);
return hours * 3600 + minutes * 60 + seconds;
}
const validHourList = [
{ validHour: ['00:00', '01:00'] },
{ validHour: ['00:00', '02:00'] },
{ validHour: ['01:00', '10:00'] },
];
const validHours = validHourList.map(item => ({
start: parseTime(item.validHour[0]),
end: parseTime(item.validHour[1]),
}));
validHours.sort((a, b) => a.start - b.start);
console.log(validHours, 'validHours-------Sort')
let hasOverlap = false;
for (let i = 1; i < validHours.length; i++) {
if (validHours[i].start < validHours[i - 1].end) {
hasOverlap = true;
break;
}
}
if (hasOverlap) {
console.log('存在时间重叠的问题');
} else {
console.log('没有时间重叠的问题');
}
- 如何将字符串str = '1:00-2:00,3:00-4:00', 转换成数组 arr
const str = '1:00-2:00,3:00-4:00';
const arr = [
{ validHour: ['1:00', '2:00'] },
{ validHour: ['1:00', '2:00'] },
];
const subStrings = str.split(',');
const arr = subStrings.map(subString => {
const [start, end] = subString.split('-');
return { validHour: [start, end] };
});
console.log(arr);
- 判断数组arr里面的skuOrder值是否有重复
const arr = [
{ skuId: 1, skuName: '111', skuOrder: 1 },
{ skuId: 2, skuName: '222', skuOrder: 2 },
{ skuId: 3, skuName: '333', skuOrder: 4 },
{ skuId: 4, skuName: '55', skuOrder: 4 },
{ skuId: 5, skuName: '66', skuOrder: 5 },
{ skuId: 888, skuName: '77', skuOrder: 5 },
];
const skuOrderSet = new Set();
const hasDuplicate = arr.some(item => {
if (skuOrderSet.has(item.skuOrder)) {
return true;
}
skuOrderSet.add(item.skuOrder);
return false;
});
console.log(hasDuplicate);
const hasDuplicate = arr.reduce((prev, next) => {
if (next.skuOrder in prev) {
prev[next.skuOrder]++;
} else {
prev[next.skuOrder] = 1;
}
return prev;
}, {});
const hasDuplicateFlag = Object.values(hasDuplicate).some(count => count > 1);
console.log(hasDuplicate);