I'm trying to apply this function How parameterize array to as single comma separated value? in a 'function called by its name' script but it doesn't work as expected:
function add(a,b,c){
return a+b+c
}
var vals = callFct("add", window, 2,3,4);
document.getElementById('result').innerHTML += "<br>Function result: "+vals
// result = Function result: 9 ----> 2+3+4 : OK
The values are coming from: json={a:[2,3,4]}
function serialize(vals){
var output = [];
for (var prop in vals) {
if (vals.hasOwnProperty(prop)){
output.push(vals[prop].join(','));
}
}
return output;
}
var json = {a:[2,3,4]};
document.getElementById('result').innerHTML += "<br>Used data: "+serialize(json)
// result = Used data: 2,3,4 ---> seems to be OK... but
var test = callFct("add", window, serialize(json));
document.getElementById('result').innerHTML += "<br>Function result: "+test
// result = Function result : 2,3,4undefinedundefined ---> oups
I've tried to remove the 'undefined' ...
document.getElementById('result').innerHTML += "<br>Function result : "+test.replace(/undefined/g,'')
// result = Function result : 2,3,4 ---> nope
The called function:
function callFct(w, y, z ) {
var z = Array.prototype.slice.call(arguments, 2);
console.log('vars = '+z)
let v = w.split(".");
let x = v.pop();
for(var i = 0; i < v.length; i++) {
y = y[v[i]];
}
return y[x].apply(y, z);
}
What's wrong in my way to proceed?