Сообщение от danik.js
|
var array = ['x', 'y', 'z'],
expression = "x+y+z";
var scope = new Scope(array);
var result = eval('with(scope){' + expression + '}');
alert(result);
function Scope(array){
this[array[0]] = 1; // x=1
this[array[1]] = 2; // y=2
this[array[2]] = 3; // z=3
}
|
спасибо. мне тут еще кое-что незнакомо, но разберусь.
я пока проблему свою решил по-другому. не знаю, насколько элегантно, но думаю с регекспами это конечно очень медленно:
var array = somefunc(),
expression = 'x+y+z',
result = '';
expression = expression.replace(/([a-z])+/g, "array['$1']"); // array['x']+array['y']+array['z']
result = eval(expression);
alert(result);
function somefunc() {
array = { // параметры разобрал на ассоциативный массив
'x': 1,
'y': 2,
'z': 3 };
return array;
}