1

下面是我的代码:我试图在拆分后获取数组中的第二项(始终为 3 位),并尝试用“-”将其分隔为第一个和第二个第三个字符。所以,'021' 应该变成 '0'、'21' 并附加到同一个数组。

var q = {f_seq: "14-021-1721307"};
p = q.f_seq.split('-');
p[1] = p[1].substr(0, 1);
p[2] = p[2].substr(1, 2);
console.log(p); 

电流输出:

['14', '0', '72']

预期输出:

['14', '0', '21', '1721307']
4

4 回答 4

2

p与其在拆分原始字符串后进行变异,不如创建一个新数组来保存输出。将更容易理解正在发生的事情。

var q = {f_seq: "14-021-1721307"};
p = q.f_seq.split('-');
let out = [p[0],p[1][0],p[1].substr(1,2), p[2]];
console.log(out); 

于 2020-11-04T21:45:39.340 回答
1

您可以使用splice精确剂量的方法:

let q = {f_seq: "14-021-1721307"};
let p = q.f_seq.split('-');
p.splice(1,1,p[1][0],p[1].slice(1))
console.log(p)
于 2020-11-04T22:18:50.940 回答
1

随机使用较新的数组功能,因为我一直忘记它们在那里:

const str = '14-021-1721307'
const split = str.split('-').flatMap(
    (s, i) => i === 1 ? [s[0], s.substr(1)] : s
)
console.log(split)

于 2020-11-04T22:11:58.173 回答
-1

var q = { f_seq: "14-021-1721307" };
p = q.f_seq.split('-');
//p[1] = p[1].substr(0, 1);
//p[2] = p[2].substr(1, 2);

console.log(p);
// => [ '14', '021', '1721307' ]

.split不修改数组,它创建一个新数组并返回它。

然后您可以将您的第二个修改p[1]应用于分离021但最好解释一下目标,以便我们可以提供适用于每种情况的真正解决方案。

于 2020-11-04T21:43:33.040 回答