【问题标题】:How to use indexOf to find function in array如何使用 indexOf 在数组中查找函数
【发布时间】:2016-05-25 18:14:50
【问题描述】:

我有一个函数数组。

var arrOfFunc = [];

我有一个推送到数组的脚本,一个重绘谷歌图表的函数

可以有多种功能,具体取决于我决定在页面上放置多少图表

var chart = "done";

function drawChart(){ ... } //each draw chart function belongs to its own scope.

arrOfFunc.push(drawChart);

$(window).resize(function(){
   if(chart=="done"){
     chart = "waiting";
     setTimeout(function(){
       for(var i in arrOfFunc ){
         arrOfFunc[i]();
       }
       chart = "done"
     },1000);
});

问题是我有一个用于重新运行整个功能的网格刷新按钮:

  • 进行 api 调用
  • drawChart()重新渲染网格
  • 比将drawChart()函数推送到arrOfFunc;

在决定是否将其推送到 arrOfFunc 对象之前,如何检查该函数是否已存在于数组中?

或者.indexOf() 是否只适用于字符串。

【问题讨论】:

  • 您的问题不清楚。创建一个 MCVE。
  • 不确定你能做到这一点。您可以为每个函数命名并将它们存储在另一个数组中。
  • indexOf 适用于任何数据类型。 arrOfFunc.indexOf(drawChart) > -1
  • 阅读the documentation;试试看。
  • 拥有一个drawGraph 并为每个图形提供一个用于渲染它的id 不是更有意义吗?喜欢drawGraph(0); drawGraph(1); drawGraph(4324);

标签: javascript arrays indexing


【解决方案1】:

indexOf 标识数组中的对象。

由于 Javascript 将所有函数都视为对象,indexOf 也应该适用于函数。

【讨论】:

    【解决方案2】:

    创建多个drawChart() 函数是违反JS 的基本原理的。您只需声明一次并从任何对象调用它。您应该在函数中引用的“this”将代表您从中调用它的对象。你最好学习this 和 JS 中的作用域。我建议你看看this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多