告诉我,如何以最佳方式转换字符串,例如
const data = "1350, 1351, 1390-1391, 1401, 1402 - 1407";
的数组,如
const range = [
{
min: 1350,
max: 1350,
},
{
min: 1351,
max: 1351,
},
{
min: 1390,
max: 1391,
},
{
min: 1401,
max: 1401,
},
{
min: 1402,
max: 1407,
},
];
换句话说,您需要使用显式指定这些数字范围的字符串创建一个数字范围数组。
最明显的可能算法是:
1)使用分隔符,
拆分字符串
2)生成的部分使用命令trim
清除空间。
3)检查零件是否为数字
4)如果没有,则使用分隔符-
拆分该部分
( 5)所获得的零件使用trim
命令清除空间,
6)检查组件eq 2的数量,它是一个数字
但是,它是否有可能使它更理想,更美丽,更有效?
发布于 2018-04-15 23:59:37
您可以使用.split()
和.map()
const data = "1350, 1351, 1390-1391, 1401, 1402 - 1407";
const range = data.split(",").map(s => {
let [min, max = min] = s.split("-");
return {min: Number(min), max: Number(max)}
});
console.log(range);
.as-console-wrapper { max-height: 100% !important; top: 0; }
发布于 2018-04-15 23:59:16
试着做这样的事情:
const data = "1350, 1351, 1390-1391, 1401, 1402 - 1407"
const result = data
.split(/\s*,\s*/)
.map(pair => {
const [min, max = min] = pair
.split(/\s*-\s*/)
.map(Number)
return {
min,
max
}
})
console.log(result)
发布于 2018-04-15 23:59:44
您可以结合使用split
方法和reduce
方法。
减()方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其还原为单个值。
另外,使用+
操作符,以便将结果强制到Number
。
const data = "1350, 1351, 1390-1391, 1401, 1402 - 1407";
const array = data.split(', ').reduce(function(arr, elem){
var [min, max] = elem.split('-');
arr.push({
min : + min,
max: + (max || min)
});
return arr;
},[]);
console.log(array);
https://stackoverflow.com/questions/49852177
复制相似问题