gpt4 book ai didi

javascript - 字符串元素和对象键值

转载 作者:行者123 更新时间:2023-11-28 03:04:40 25 4
gpt4 key购买 nike

感谢您的阅读

假设我有这组输入:

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 中的值并将其添加到Array中其对应的Int的位置.

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

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

  • 1C来自S应该分配 C 的值来自Ob在数组的位置 0 中,使得
A[0] === 3;
  • 如果我们对上述所有输入执行此操作,结果应为
A = [33, 0, 0, 7, 0, 0, 0, 0, 0, 11]

我已经成功地用下面的代码做到了

//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]});

但我确信必须有一种更有效的方法在 char 中仅循环一次( charS ) 。就像下面的代码一样。我的主要问题是管理 Int 的位数(即 1、10、100、1000、10000 等),如果按字符循环字符串,则使用空格作为分隔符。

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

感谢您的帮助。

最佳答案

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

const
data = "1C 5A 10F 1F 5E",
length = 10,
object = { "A": 1, "B": 2, "C": 3, "D": 5, "E": 7, "F": 11, "G": 13, "H": 17, "J": 19, "K": 23 },
result = data
.split(' ')
.reduce(
(r, position) => {
var [i, key] = position.match(/\d+|\D/g);
i--;
r[i] = (r[i] || 1) * object[key];
return r;
},
Array.from({ length }, _ => 0)
);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 字符串元素和对象键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60712720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com