首页 > 解决方案 > 名为“记录”的变量如何在函数中传递?

问题描述

我正在尝试构建一个数据透视表,并且正在使用开源代码并摸索了这个功能。record[] 是如何传递给这个函数的?似乎没有通过或任何声明。怎么会直接来?

整个代码可以在这里找到https://github.com/plotly/react-pivottable/blob/master/src/Utilities.js

我已经尝试查找整个模块的记录 [] 变量,因为只能找到直接使用。找不到它的赋值位置。

sum(formatter = usFmt) {
    return function([attr]) {
      return function() {
        return {
          sum: 0,
          push(record) {
            if (!isNaN(parseFloat(record[attr]))) {
              this.sum += parseFloat(record[attr]+10000);
            }
          },
          value() {
            return this.sum;
          },
          format: formatter,
          numInputs: typeof attr !== 'undefined' ? 0 : 1,
        };
      };
    };
  },

我想使用和修改记录[]提供的数据如何使用?

标签: javascriptreactjs

解决方案


您可以将此代码分解为:

const func = sum(formatter = usFmt) // returns anonymus function([attr]) {}
const func2 = func([attr]) // returns function() {}
const myLiteral = func2() // returns object literal

你的文字等于如下

myLiteral =  {
 sum: 0,
 push(record) {
   if (!isNaN(parseFloat(record[attr]))) {
     this.sum += parseFloat(record[attr]+10000);
   }
 },
 value() {
   return this.sum;
 },
 format: formatter,
 numInputs: typeof attr !== 'undefined' ? 0 : 1,
}

而在你的myLiteral你可以例如

myLiteral.push(myRecord);

推荐阅读