如何在Javascript中将变量用作函数参数?

时间:2018-08-27 14:01:37

标签: javascript json

我是JS的新手,所以如果我的问题很难理解,那就对不起。 我正在用JS(电子)编写一个程序,该程序为我用C ++编写的另一个程序提供了用户界面,因此我基本上是用JavaScript重写它。

我想在我的代码中使用这个JSON变量(或它的任何名称)。

var ShowSecondsInSystemClock = '{"name":"ShowSecondsInSystemClock","Description":"Patches the System Tray clock to show seconds","ExplorerRestartRequired":"true","category":"UI-Tweaks","badges":"UITweaks"}'

然后我要在函数“ ShowSecondsInSystemClock”的参数为的地方使用此函数。

function TweakParser(TweakName, NeeddedReturn) {
  if (NeeddedReturn == "Description") {
    //I'm trying to use TweakName as the parameter of parse(),but it only 
    //accepts the name of the Tweak directly
    var NeeddedTweakInfo = JSON.parse(TweakName)
    return NeeddedTweakInfo.Description
  }
}

由于会有很多调整,因此该特定功能的用例例如

//I use a non-existing tweak here for the example
TweakParser("RemoveArrowsFromShortcut","Description")

我现在想要TweakParser做的是使用RemoveArrowsFromShortcut作为JSON.parse()的参数,但是它只直接接受JSON变量的名称,而当我输入第一个变量的名称时函数TweakParser()的参数给我一个错误,因为参数(变量)本身不是JSON变量(或诸如此类的东西)。

所以我对你的问题是:

如何使用TweakParser()的第一个参数包含的字符串作为JSON.parse()函数的参数?

1 个答案:

答案 0 :(得分:2)

您需要创建映射 就像架构'key': variable 示例:

{
  'RemoveArrowsFromShortcut': ShowSecondsInSystemClock
}

完整示例:

  var ShowSecondsInSystemClock = '{"name":"ShowSecondsInSystemClock","Description":"Patches the System Tray clock to show seconds","ExplorerRestartRequired":"true","category":"UI-Tweaks","badges":"UITweaks"}' 

  var mapping = {
    RemoveArrowsFromShortcut: ShowSecondsInSystemClock 
  };

  function TweakParser(TweakName, NeeddedReturn) {
  
    if (NeeddedReturn == "Description") {
      
      var NeeddedTweakInfo = JSON.parse(mapping[TweakName]); // PAY ATTENTION HERE
      return NeeddedTweakInfo.Description
    }
  }

  var result = TweakParser("RemoveArrowsFromShortcut","Description")

 console.log('result', result)