Javascript 调用存储在数组(js)中的计算

Javascript 调用存储在数组(js)中的计算,javascript,arrays,Javascript,Arrays,我有一个数组,我想做一个存储在数组中的计算 例如: var Count = 0; var Test = [0,Count++,0,0]; 在函数中,我希望通过执行以下操作来增加变量计数: function Debug(){ Test[1]; } 我已经尝试了许多不同的方法,并且我成功地做到了: 当数组被声明或 无所事事 为每个数组单元创建一个新函数,这对于我正在尝试做的事情来说非常耗时。我想要更快/更简单的 我希望代码在声明数组时不运行,而是在调用特定数组单元格时运行,如果可能的

我有一个数组,我想做一个存储在数组中的计算

例如:

var Count = 0;
var Test = [0,Count++,0,0];
在函数中,我希望通过执行以下操作来增加变量计数:

function Debug(){
    Test[1];
}
我已经尝试了许多不同的方法,并且我成功地做到了:

  • 当数组被声明或
  • 无所事事
  • 为每个数组单元创建一个新函数,这对于我正在尝试做的事情来说非常耗时。我想要更快/更简单的

我希望代码在声明数组时不运行,而是在调用特定数组单元格时运行,如果可能的话,在整个过程中都不声明新函数。

您需要以稍微不同的方式执行此操作。您需要将
计数
增量包装到它自己的函数中:

var Count = 0;
var Test=[0, function() { Count++ }, 0, 0];
function Debug() {
    Test[1]();
}
然后调用函数:

var Count = 0;
var Test=[0, function() { Count++ }, 0, 0];
function Debug() {
    Test[1]();
}

你可以这样做

var count = 0,
      arr = [0,"count++",0,0],
  runItem = Function("return " + arr[1]);
runItem(); // <- 0
runItem(); // <- 1
var计数=0,
arr=[0,“计数++”,0,0],
runItem=函数(“返回”+arr[1]);

runItem();// 您似乎在寻找语法的简单性。我看不出有什么办法能让你这么做。但是有一种方法可以在字段访问上运行函数。因此,这可能会以牺牲初始设置的复杂性为代价实现您想要的功能:

var Test = [0, "replace me", 0, 0];

Object.defineProperties(Test, {
  1: {get: (() => {let count = -1; return () => ++count})()}
});

Test[0]; //=> 0
Test[1]; //=> 0
Test[2]; //=> 0
Test[3]; //=> 0
Test[0]; //=> 0
Test[1]; //=> 1
Test[2]; //=> 0
Test[3]; //=> 0
Test[1]; //=> 2
Test[1]; //=> 3
Test[1]; //=> 4
如果ES6 fat arrow语法令人困惑,则相当于:

Object.defineProperties(Test, {
  1: {get: (function() {
    let count = -1; 
    return function() {
      return ++count;
    };
  })()}
});

JS,他对你做了什么(答对了!我避免了耗时的初始设置,我复制了一个带有相反符号的阵列(在我的项目中效果很好),一切都很好。非常感谢!