js 在input输入框中输入:3-10,或者3~10,如何获取这中间的整数值?
例如:我在输入框中输入1,2,3-10
如何得到:1,2,3,4,5,6,7,8,9,10
回答:
正则替换
// 这里用字符串演示,实际里就是input.value'1,2,3-10'.replace(/(\d+)[-~](\d+)/g,(_,$1,$2) => {
const start = +$1;
const end = +$2;
if(start>end) return $1;
return Array.from({length: end-start+1}, (_,i) => start+i).join(',')
})
回答:
// 题目中没有其他干扰条件,按用户正常输入考虑: 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
}
以上是 js 在input输入框中输入:3-10,或者3~10,如何获取这中间的整数值? 的全部内容, 来源链接: utcz.com/p/936859.html