例如:我在输入框中输入1,2,3-10
如何得到:1,2,3,4,5,6,7,8,9,10
// 题目中没有其他干扰条件,按用户正常输入考虑:
const str = '3-10'
function test(str) {
const input = str.split('-')
const startIndex = parseInt(input[0], 10)
const endIndex = parseInt(input[1], 10)
return new Array(endIndex - startIndex + 1).fill(0).map((v, i) => startIndex + i)
}
console.log(test(str));
// => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console.log(demo('1,2,3-10'))
function demo (data) {
const list = data.split(',')
const result = list.map(function (item) {
item = item.split('-')
if(item.length === 1) {
return item
} else {
const arr = []
for(let a = item[0]*1; a<=item[1]*1; a++) {
arr.push(a)
}
return arr
}
})
return result.flat().map(c => c*1)
}
let str = '1,2,3-10'
getData(str)
function getData(str) {
const tail = str.split('-')
const min = str.indexOf(',') !== -1 && str.split(',')[0] || tail[0]
const max = tail[1]
let res = ''
for (let i = Number(min); i<=Number(max); i++) {
res += i + (i<max && ',')
}
return res
}
13 回答12.7k 阅读
7 回答1.8k 阅读
9 回答1.6k 阅读✓ 已解决
6 回答846 阅读
3 回答1.1k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
正则替换