使用JavaScript将复数格式字符串转换为实部虚部二维数组的方法
实现方案
处理逻辑
- 第一步:清理原始字符串,移除所有左右括号
- 第二步:按空格分割字符串,得到每个独立复数的子串数组
- 第三步:遍历每个子串,按规则解析为[实部, 虚部]的数组:
- 若子串包含
+:按+拆分后,前半为实部,后半移除j后为虚部,分别转为数字即可 - 若子串包含
j:仅存在虚部,实部为0,虚部为子串移除j后转数字的结果 - 其余情况:仅存在实部,虚部为0,实部为子串转数字的结果
- 若子串包含
完整代码示例
// 原始输入字符串 let a = "0j (0.001953125+0j) (-0.001953125+0.001953125j) (0.998046875+0j) (-0.001953125+0j) (0.001953125+0j) (0+0.0914587j)" // 1. 清理括号,分割为单复数字符串数组 const complexStrList = a.replace(/[()]/g, '').split(' ') // 2. 解析为目标二维数组 const my_array = complexStrList.map(str => { if (str.includes('+')) { // 完整实部+虚部格式 const [realStr, imagStr] = str.split('+') const real = Number(realStr) const imag = Number(imagStr.replace('j', '')) return [real, imag] } else if (str.includes('j')) { // 仅虚部 const imag = Number(str.replace('j', '')) return [0, imag] } else { // 仅实部 const real = Number(str) return [real, 0] } }) // 后续原有转JSON逻辑可直接复用 const temp_key = ["i", "q"] const my_json = {} for(let a = 0; a < my_array.length; a++){ const temp_json = {}; for(let b = 0; b < my_array[a].length; b++){ temp_json[temp_key[b]] = my_array[a][b]; } my_json[String(a)] = temp_json; } console.log("my_array: ", my_array) console.log("my_json: ", my_json)
说明
上述代码完全适配给出的后端返回字符串规则,无需额外兼容边缘格式,可直接处理动态返回的不同内容。
内容的提问来源于stack exchange,提问作者karim
相关产品推荐
相关产品推荐

