如何根据从字符串中提取的名称在运行时创建变量?

时间:2010-02-24 04:08:02

标签: javascript string

希望有人可以协助并希望在JavaScript中可以实现这一点。我基本上有以下格式的字符串:

A,B,C:d,E,F

我想要实现的是将左侧JavaScript变量配对到“:”左侧的方法,右侧的值位于“:”的右侧

我基本上希望设置以下变量,以便我可以在我的编码中使用,即:

var A = D;
var B = E;
var C = F;

然后我可以将A,B和C的值用作其他JavaScript函数的参数。

我已经查看了此字符串操作的split和slice方法,但不确定如何将左侧与右侧值配对。

任何帮助都会很棒,谢谢!

2 个答案:

答案 0 :(得分:5)

使用此方法(将变量附加到对象),您可以在没有eval语句的情况下引用代码中的变量。

a = "A,B,C:D,E,F";
array = a.split(":"); //split on the colon, get two strings
lefts = array[0];
rights = array[1];

obj = {} //object to attach variables to.
for( var i = 0; i < lefts.length; i++ )
{
  obj[lefts[i]] = rights[i]; //set the member variables of obj
}

obj.A // D
obj.B // E
obj.C // F

如果您关心浪费的逗号属性,请在设置对象之前检查lefts [i]是否等于逗号。

答案 1 :(得分:0)

此处的pairup函数会生成执行配对的代码。您需要eval返回的代码才能实际执行它。

<script>

function pairup(s) {
  s = s.split(":");
  var lhs = s[0].split(",");
  var rhs = s[1].split(",");
  var pairing = "";
  for (var i = 0; i < lhs.length; i++) {
    pairing += "var " + lhs[i] + " = " + rhs[i] + "; \n";
  }
  return pairing;
}

alert(pairup("A,B,C:D,E,F"));

</script>

如果您准备好绑定变量值的对象,那么您可以这样做:

<script>

function pairup(s, oleft, oright) {
  s = s.split(":");
  var lhs = s[0].split(",");
  var rhs = s[1].split(",");
  for (var i = 0; i < lhs.length; i++) {
    oleft[lhs[i]] = oright[rhs[i]];
  }
}

oleft = {};
oright = { firstName: "F", lastName: "L" };
pairup("givenName,familyName:firstName,lastName", oleft, oright);
alert(oleft.givenName + ", " + oleft.familyName);

</script>