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
,其中:
值减去1是数组中的位置Int
用于获取其在Char
中的值,并将其添加到数组中相应的Ob
位置Int
- 如果
的值重复(同一行中的值),则该位置数组中的值应与Int
中字符的新值相乘Ob
- 来自
的值S
应将来自1C
的Ob
的值分配到数组的位置0,以便C
- 如果我们对上面的所有输入都这样做,结果应该是
//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 => {});