Добавить динамические свойства из списка строк - PullRequest
0 голосов
/ 01 января 2011

У меня есть следующая проблема в AS3.У меня есть такая строка: «prop1: val1, prop2: val2, ...»;Я хочу разделить и проанализировать строку, чтобы получить динамический объект, подобный этому: {prop1: "val1", prop2: "val2"}.

Простой способ решить это - циклически перебирать значения строки сделать:

if (strProp1 == "prop1") o.prop1 = strVal1;if (strProp1 == "prop2") o.prop1 = strVal2;

Так как я знаю ожидаемые имена свойств, это работает для меня, но не кажется элегантным решением.Мне интересно, есть ли другой способ в as3 (похожий на api в Java), чтобы решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 01 января 2011

Быстрый пример использования split , нового объекта:

// function that will parse the string an return an object with
// all field and value
function parse(str:String):Object {
 // create a new object that will hold the fields created dynamically
 var o:Object = {};

 // split the string from ',' character
 // this will return an array with string like propX:valX
 for each (var values:String in str.split(",")) {
  // now split the resulting string from ':' character
  // so you have an array with string propX and valX
  var keyvalue:Array = values.split(":");
  // assign the key/value to the object
  o[keyvalue[0]] = keyvalue[1];
 }
 return o;
}

// usage example
var str:String="prop1:val1,prop2:val2,prop3:val3";

var myObject:Object = parse(str);

trace(myObject.prop2); // output val2
0 голосов
/ 01 января 2011
 //get an Array of the values
 var strData:Array = yourString.split(",");

 //create the object you want to populate
 var object:Object = {};

 for( var i:int ; i < strData.length ; ++i )
 {
     //a substring containing property name & value
     var valueString:String = strData[i];

     var dataArray:Array = valueString.split(":");

     obj[dataArray[0]] = dataArray[1];
 }
...