【发布时间】:2020-07-02 19:52:10
【问题描述】:
我正在尝试将这个函数 How parameterize array to as single comma separated value? 应用到一个“按其名称调用的函数”脚本中,但它没有按预期工作:
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
值来自: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
我已尝试删除“未定义”...
document.getElementById('result').innerHTML += "<br>Function result : "+test.replace(/undefined/g,'')
// result = Function result : 2,3,4 ---> nope
被调用函数:
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);
}
我的前进方式有什么问题?
【问题讨论】:
-
你为什么不用
JSON.stringify? -
json变量是一个对象,而不是 JSON(这是一种文本格式),serialize不会将其转换为 JSON。它将它变成一个字符串数组。 -
如果您需要帮助,您需要显示
callFct的代码。 -
功能添加有问题
标签: javascript arrays json