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

Zhi*_*har 0 javascript arrays string type-conversion

告诉我,我怎样才能最佳地转换字符串

const data = "1350, 1351, 1390-1391, 1401, 1402 - 1407";
Run Code Online (Sandbox Code Playgroud)

像一个数组

const range = [
    {
        min: 1350,
        max: 1350,
    },
    {
        min: 1351,
        max: 1351,
    },
    {
        min: 1390,
        max: 1391,
    },
    {
        min: 1401,
        max: 1401,
    },
    {
        min: 1402,
        max: 1407,
    },
];
Run Code Online (Sandbox Code Playgroud)

换句话说,您需要使用字符串创建数字范围数组,其中显式指定了这些数字范围.

最明显的可能算法是:

1)使用分隔符拆分字符串,

2)使用该命令清除生成的零件空间 trim

3)检查部件是否是数字

4)如果没有,则使用分隔符拆分零件 -

5)使用命令清除所获得的部件空间trim,

6)检查组件eq 2的数量和它是一个数字

但它是否有可能使其更优化,更美观,更有效?

Moh*_*man 5

你可以使用.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);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)