Javascript:将字符串转换为对象数组?

Javascript:将字符串转换为对象数组?,javascript,arrays,string,type-conversion,Javascript,Arrays,String,Type Conversion,告诉我,如何最佳地转换字符串,如 const data = "1350, 1351, 1390-1391, 1401, 1402 - 1407"; 像这样的数组 const range = [ { min: 1350, max: 1350, }, { min: 1351, max: 1351, }, { min: 1390, max: 1391, },

告诉我,如何最佳地转换字符串,如

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的数量是否为一个数字


但是有没有可能使它更优化、更漂亮、更有效呢?

试试这样的方法:

const data=“135013511990-13911402-1407”
常量结果=数据
.split(/\s*,\s*/)
.map(对=>{
常数[min,max=min]=对
.split(/\s*-\s*/)
.地图(编号)
返回{
闵,
最大值
}
})
console.log(结果)
您可以使用
.split()
.map()

const data=“135013511990-13911402-1407”;
const range=data.split(“,”).map(s=>{
设[min,max=min]=s.split(“-”);
返回{min:Number(min),max:Number(max)}
});
控制台日志(范围)

作为控制台包装{max height:100%!important;top:0;}
您可以将
拆分
方法与
减少
方法结合使用

reduce()方法对累加器和每个累加器应用一个函数 数组中的元素(从左到右),以将其缩减为单个 价值观

另外,使用
+
运算符强制将结果设置为
编号

const data=“135013511990-13911402-1407”;
常量数组=data.split(',').reduce(函数(arr,elem){
变量[最小值,最大值]=元素拆分('-');
arr.push({
min:+min,
最大值:+(最大值|最小值)
});
返回arr;
},[]);

console.log(数组)
我认为简单且易于理解的方法是循环遍历这些值并检查它们是否具有范围值(使用连字符),然后为
范围
数组创建相应的对象

const data=“135013511990-13911402-1407”;
var范围=[];
data.split(',).forEach((val)=>{
var obj={};
if(val.indexOf('-')=-1){
obj.min=val;
obj.max=val;
}否则{
obj.min=val.split('-')[0].trim();
obj.max=val.split('-')[1].trim();
}
射程推力(obj);
});

控制台日志(范围)此代码将帮助您

const data=“135013511990-13911402-1407”;
var arr=data.split(',');
常数范围=[];
对于(变量i=0;i控制台日志(范围)不要忘记使用
+
运算符或
数字
构造函数来强制值为数字。@MihaiAlexandru Ionut啊,对,没有注意到,谢谢,这对你有用吗?