【问题标题】:How to Pass an Unknown Number of objects as arguments into JavaScript Function and at last call the function?如何将未知数量的对象作为参数传递给 JavaScript 函数并最后调用该函数?
【发布时间】:2022-08-14 12:16:50
【问题描述】:

我实现了一个 Javascript 函数 (\'setData()\') 并使用另一个函数 (\'getDataSet(data, id)\') 创建了最终代码。 getDataSet(data, id) 将被调用任意次数并收集所有数据集,setData() 函数将创建图表。

    function getDataSet(data, id){
        //data is a object and name is a element ID
        //do something
    }

    function setData(){
        var chartName;
        var x = new Array;
        for (var i = 0; i < arguments.length; i++) {
            if (i != 0) {
                console.log(arguments[i]);
                x.push(arguments[i]);
            }
            else{
                console.log(arguments[0]);
                chartName = arguments[0];
            }
        }
    }

当我按以下方式使用时,它可以工作。

setData(\"viewPoint\", getDataSet(x, \'step1\'), getDataSet(y, \'step2\'), getDataSet(z, \'step3\'));

但是调用 getDataSet(data, id) 函数的次数会根据数据集的数量而改变。 setData() 函数的参数数量将发生变化。我在那里实现了 showCharts() 函数,如下所示。

    //Main function
    function showCharts(){ // <- Not working function

        var objects;

        // Run an array to retrieve data and using them need to call getDataSet()
        // finally add their return values as arguments into setData()

        objects += getDataSet(data, id) + \",\"; // <- create data sets separatly

        setData(objects);   // <- show all data sets in one chart
    }

但仍然无法弄清楚如何将未知数量的对象作为参数传递给 showCharts() 函数。请帮我。

这是真正的code。第 132 行。

  • 使用数组而不是大量参数,可能是您最好的选择。
  • 改为使用逻辑来形成 JSON 对象。例如: { \"viewPoint\" : { \"step1\" : [...DataSetValuesArrayStep1..] , \"step2\" : [...DataSetValuesArrayForStep2...] } }
  • 您可以使用点分符号,例如:function showCharts(...args)。然后你可以传递任意数量的参数。在函数本身args 是一个数组

标签: javascript object


【解决方案1】:

您可以使用

showCharts(...values)
{
    //values will be an array of the variables you passed that you can use
}

【讨论】:

    【解决方案2】:

    我认为如果制作一个接受 setData 函数数组的参数,您可能会大大简化:

        function showCharts(){
            let arr;
            arr.push(getDataSet(data, id))
            setData(arr);
        }
    
        function setData(array){
            var chartName;
            var x = new Array;
            for (var i = 0; i < array.length; i++) {
                if (i != 0) {
                    console.log(array[i]);
                    x.push(array[i]);
                }
                else{
                    console.log(array[0]);
                    chartName = array[0];
                }
            }
        }
    

    【讨论】:

      【解决方案3】:

      我修改了代码,这种方式奏效了。
      使用 showCharts() 函数来检查代码。

                  function showCharts(){                
                      var arr = new Array;
                      var chartLocationID = "chartContainerSales";
                      var chartTopic = "Chart Topic";
                      var xAxisTitle = "Type code";
                      var yAxixTitle = "Qty";
      
                      console.log(xData);
                      console.log(yData);
                      console.log(zData);
      
                      arr.push(createData(xData, 'MyName'));
                      arr.push(createData(yData, 'YourName'));
                      arr.push(createData(zData, 'Dog'));
                      arr.push(createData(wData, 'New Goat'));
      
                      console.log(arr);
                      
                      setData(chartTopic, xAxisTitle, yAxixTitle, chartLocationID, arr);
                  }
      

      【讨论】:

        猜你喜欢
        • 2011-05-06
        • 2021-04-13
        • 2021-04-15
        • 2018-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-29
        相关资源
        最近更新 更多