【问题标题】:How to create array name from function parameter [duplicate]如何从函数参数创建数组名称[重复]
【发布时间】:2017-02-20 16:16:03
【问题描述】:

我想从一个函数创建一个数组。我将如何执行此操作,以便在参数中传递数组名称。

function arrayCreate(name){
     name = [];
    }

因此,如果我使用 arrayCreate("Hello") 我会将 Hello = [] 作为数组。明显的问题是我正在传递一个字符串,所以我将如何克服这个问题。

为了更多地解释我的问题,我有一个更新图表的函数,如下所示:

      self.updateChart = function(name){

        if (typeof chartData == 'undefined') {
          chartData = [];
        }
        chartData.push({
          date: game.tickCount,
          visits: self.price,
        });
        priceLabour.validateData();
        return chartData;
        }

现在“chartData = []”和“priceLabour”我希望它是动态的并根据“name”参数进行更改。

【问题讨论】:

  • 就算拿到了,命名数组怎么办?
  • 我想显示需要不同命名数组的不同图表
  • 你如何交出数据?
  • 我有一个名为 Market.list 的对象,我使用 Market.list[4].updateChart(); 创建一个图表。显然它适合一个市场,但我想重用代码
  • 数组的名称看起来并不重要,因为它只是在这个函数中被引用。为什么需要指定名称?

标签: javascript arrays function


【解决方案1】:

您不能只通过字符串创建变量。您可以使用字符串创建、分配和读取对象的属性:

var obj = {};
obj[name] = [];
obj[name].push(...);

【讨论】:

  • 所以我没有办法更改我刚刚添加的编辑代码?
  • @epayne 我不能说。然而,这似乎是一个泄漏的全局。
  • 我声明了chartData = [];函数外
【解决方案2】:

您可以创建一个动态命名的数组作为对象的属性。不完全确定您的需求是什么,但这里有一个基于您提供的代码的示例。

  var data = {};

  self.updateChart = function(name){
    // Store a shallow clone of the chartData array in the data obj
    data[name] = chartData.slice(0);

    if (typeof data[name] == 'undefined') {
      data[name] = [];
    }
    data[name].push({
      date: game.tickCount,
      visits: self.price,
    });
    priceLabour.validateData();
    return data[name];
  };

调用updateChart 后,您应该可以在其他地方使用data["myString"] 来引用您的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-23
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    相关资源
    最近更新 更多