自动将字符串转换为数组中的变量

Convert string into variable in array automatically

我在尝试将字符串转换为数组中的变量时遇到问题。

变量是:

const n = 1; const s = -1;

数组字符串:

let walk = ['n', 's', 'n', 's', 'n', 's', 'n', 's', 'n', 'n']; 

我想自动转换为这个变量数组:

let walk = [n, s, n, s, n, s, n, s, n, n];

我正在尝试拆分,但数组仍然不是 var 字符串:

let text = walks.toString().split(',').join('-')
console.log(text)

您可以使用 eval,但通常不推荐使用。

const n = 1; const s = -1;
let walk = ['n', 's', 'n', 's', 'n', 's', 'n', 's', 'n', 'n'].map(eval);
console.log(walk);

您可以将 sn 放入一个对象中。

const variables = {
  n: 1,
  s: -1
};

let walk = ['n', 's', 'n', 's', 'n', 's', 'n', 's', 'n', 'n'];

console.log(
  walk.map(variable => variables[variable])
)

有关通过另一个变量访问变量的详细信息,请参阅 this question

如@Unimitigated所说,eval()不推荐使用

有关详细信息,请参阅此 link Never use eval()!

为了更好的方法,没有 eval()。你可以试试这个方法

const n = 1; const s = -1;
const array = [];
let walk = ['n', 's', 'n', 's', 'n', 's', 'n', 's', 'n', 'n'].map(value => {
  return Function('"use strict";return (' + value + ')')();
}); 

我希望这会有用。