Javascript 字符串元素和对象键值

Javascript 字符串元素和对象键值,javascript,arrays,string,object,foreach,Javascript,Arrays,String,Object,Foreach,感谢您的阅读 假设我有这组输入: const S = "1C 5A 10F 1F 5E"; //Int are rows and Char are columns (ie. seat in a movie theater) const N = 10; // Number between 1 to 100000 const Ob = { "A": 1, "B": 2, "C": 3,"D": 5, "E": 7, "F": 11, "G": 13,"H": 17, "J": 19, "K": 23

感谢您的阅读

假设我有这组输入:

const S = "1C 5A 10F 1F 5E"; //Int are rows and Char are columns (ie. seat in a movie theater)
const N = 10; // Number between 1 to 100000
const Ob = { "A": 1, "B": 2, "C": 3,"D": 5, "E": 7, "F": 11, "G": 13,"H": 17, "J": 19, "K": 23};
我想创建一个数组大小
N
,其中:

  • Int
    值减去1是数组中的位置

  • Char
    用于获取其在
    Ob
    中的值,并将其添加到数组中相应的
    Int
    位置

  • 如果
    Int
    的值重复(同一行中的值),则该位置数组中的值应与
    Ob
    中字符的新值相乘

例如(给定上述提供的值):

  • 来自
    S
    的值
    1C
    应将来自
    Ob
    C
    的值分配到数组的位置0,以便
  • 如果我们对上面的所有输入都这样做,结果应该是
我已经用下面的代码成功地做到了

//Resulting Array
A = Array(N).fill(0)

//Get string Int and Char into two arrays
let Columns = S.replace(/\d/g,'').split(' ');
let Rows = S.replace(/[A-K]/g,'').split(' ').map(Number);

//Replace values in A based on Rows and Columns values
Rows.forEach((value,i) => {A[value - 1] === 0 ? arrA[value - 1] = Ob[Columns[i]] : A[value - 1] = Ob[Columns[i]] * A[value - 1]});
但我确信必须有一种更有效的方法在
S
中只循环一次(
char
char
)。类似下面的代码。我的主要问题是管理代码< int >代码>(例如,1, 10, 100,1000, 10000等)的数字,而使用空白作为分隔符,如果每个字符循环字符串。

A = [...S].forEach(char => {});

谢谢你的帮助

您可以拆分字符串,通过获取整数和字母部分来减少位置,并在索引或1处指定值的乘法结果

const
data=“1C 5A 10F 1F 5E”,
长度=10,
object={“A:1”,B:2,C:3,D:5,E:7,F:11,G:13,H:17,J:19,K:23},
结果=数据
.拆分(“”)
.减少(
(r,位置)=>{
var[i,key]=位置匹配(/\d+\d/g);
我--;
r[i]=(r[i]| 1)*对象[键];
返回r;
},
Array.from({length},{=>0)
);
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
您可以拆分字符串,通过获取整数和字母部分来减少位置,并指定索引或1处值的乘法结果

const
data=“1C 5A 10F 1F 5E”,
长度=10,
object={“A:1”,B:2,C:3,D:5,E:7,F:11,G:13,H:17,J:19,K:23},
结果=数据
.拆分(“”)
.减少(
(r,位置)=>{
var[i,key]=位置匹配(/\d+\d/g);
我--;
r[i]=(r[i]| 1)*对象[键];
返回r;
},
Array.from({length},{=>0)
);
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
您能说明输入和输出数据吗?您是否可以为正在运行的示例添加堆栈片段(
在编辑器中)中的代码?您是否可以说明输入和输出数据?您是否可以为正在运行的示例添加堆栈片段中的代码(
,在编辑器中)?
//Resulting Array
A = Array(N).fill(0)

//Get string Int and Char into two arrays
let Columns = S.replace(/\d/g,'').split(' ');
let Rows = S.replace(/[A-K]/g,'').split(' ').map(Number);

//Replace values in A based on Rows and Columns values
Rows.forEach((value,i) => {A[value - 1] === 0 ? arrA[value - 1] = Ob[Columns[i]] : A[value - 1] = Ob[Columns[i]] * A[value - 1]});
A = [...S].forEach(char => {});