问题描述
上面提出一个需求,希望将用户选择的时间,例如1点,2点,3点,5点,6点,7点,8点显示为1-3点,5-8点这种形式
### 相关代码 粘贴代码文本(请勿用截图)
后台返回时间是数组形式的,内容为number形式
res = [1,2,3,4,7,8,9,11,12] 数组里就是用户选择的时间点
期望在页面上显示为字符串类型: 1-4点,7-9点,11-12点这种形式
在下才疏学浅,不知道怎么实现,有没有大神帮帮忙
上面提出一个需求,希望将用户选择的时间,例如1点,2点,3点,5点,6点,7点,8点显示为1-3点,5-8点这种形式
### 相关代码 粘贴代码文本(请勿用截图)
后台返回时间是数组形式的,内容为number形式
res = [1,2,3,4,7,8,9,11,12] 数组里就是用户选择的时间点
期望在页面上显示为字符串类型: 1-4点,7-9点,11-12点这种形式
在下才疏学浅,不知道怎么实现,有没有大神帮帮忙
给你个好理解, 直接粗暴的
<script>
const res = [1,2,3,4,7,8,9,11,12];
const len = res.length;
let i = 1, str=[], n=res[0] ;
let arr = n + '';
// 1: 形成一个数组["1,2,3,4", "7,8,9", "11,12"]
while(i<len){
if(res[i] === n+1){
arr += ',' + res[i]
}else{
str.push(arr);
arr = res[i]
}
if(i===len-1){
str.push(arr + '');
}
n = res[i];
i++;
}
// 2: 分割一下就ok了
console.log(str)
let endStr = ''
str.forEach((item)=>{
const splititem = item.split(',');
if(splititem.length > 1){
endStr += `${splititem[0]}点-${splititem[splititem.length-1]}点; `
}else{
endStr += `${splititem[0]}点; `
}
})
console.log(endStr)
</script>
这个x点-y点
,x和y之间的间隔有规律吗,关键就是这个间隔的规律,找出这个规律,对数组排序之后,按规律计算对应的数组的index就行,获取index对应的数组的值拼成x点-y点
的形式就行。
6 回答2.8k 阅读✓ 已解决
8 回答4.5k 阅读✓ 已解决
6 回答3.1k 阅读✓ 已解决
5 回答2.7k 阅读✓ 已解决
6 回答2.1k 阅读
5 回答6.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
如果还有 3.5 这种骚操作,可以把第一个
if
条件换成!src[i - 1] || cur - 1 > src[i - 1]
,第二个换成!src[i + 1] || cur + 1 < src[i + 1]
。记换过后的函数为baz
。测试: