【问题标题】:Convert JSON string to function parameters将 JSON 字符串转换为函数参数
【发布时间】:2015-06-04 05:38:33
【问题描述】:

我有一串需要转换为函数参数的 javascript 对象。

字符串如下所示:

"{ "item1": "foo 1", "item2": "bar 1" }, { "item1": "foo 1", "item2": "bar 2" }"

我可以连接 "[ ]" 并调用 JSON.parse 将其转换为有效数组,但这并不能解决我的问题,因为该函数需要它们是单独的对象而不是对象数组。

前:

functionCall({ "item1": "foo 1", "item2": "bar 1" }, { "item1": "foo 1", "item2": "bar 2" });

我永远不会知道这个字符串中有多少对象,所以我也不知道函数应该接受多少个参数。

我希望能够将多个对象添加到一个变量中,例如:

var objects = { "item1": "foo 1", "item2": "bar 1" }, { "item1": "foo 1", "item2": "bar 2" }

然后我就可以打电话了

functionCall(objects);

有没有办法完成类似的事情或我可以采取的其他方法?

【问题讨论】:

  • 我相信你想要functionCall.apply(null, objects)objects 必须是一个数组。

标签: javascript json function object arguments


【解决方案1】:

您可以使用Function.prototype.apply()

functionCall.apply(window, objects);

(将 window 替换为您希望函数具有的任何范围。)

第二个参数是一个对象数组,所以继续将对象放入一个数组中,然后使用apply

【讨论】:

  • 刚刚意识到你回答了这个问题,我猜一秒钟就快了......也谢谢你。
【解决方案2】:

您可以使用Function.prototype.apply 将数组转换为函数参数:

functionCall.apply(null, objects);

初始的null 参数是函数的this 参数;如果您不调用对象方法,则不需要它,null 可以用作占位符。

【讨论】:

  • 啊,谢谢!出于某种原因,我希望将其作为数组而不是单独的对象返回。我必须等待 5 分钟才能接受您的回答,但我会的。再次感谢。
  • 如果你只是正常调用函数会发生这种情况。 .apply 的全部意义在于传播数组。