javascript - 将整行保存到状态数组中

标签 javascript arrays reactjs

我是一个 JavaScript 初学者,不知道如何准确地搜索我想要完成的...

我有以下数组,我以表格格式逐行显示在页面上。

[
    0: {
        cuip: ".A0100",
        quantity: 38,
        ...
    }
    1: {
        cuip: ".A0102",
        quantity: 1,
        ...
    }
    ...
]

当用户选择列表中的任何项目时,我会在下方的切换选中的行旁边标记复选框

  toggleRow(cuip) {
    const newSelected = Object.assign({}, this.state.selected);
    newSelected[cuip] = !this.state.selected[cuip];
    this.setState({
      selected: newSelected,
      selectAll: 2
    });
  }

我最终处于选中状态的是

{.A0100: true, ...}

太棒了。因此,如果用户选择 1、多行或所有行,我会将这些行 cuips 在状态中保存为 true。麻烦的是,我需要在行中保存某些值,如 ste、clt、数量等。即:

[
    {
        ...
            "cuip": ".A0102",
            "clt": "asvd",
            "ste": "v31r",
            "quantity": 3,
        ...
    }, {
        ...
            "clt": "vr13",
            "ste": "vr31",
            "quantity": 6,
        ...
    },
]

最佳答案

您可以存储(然后删除)对整行的引用而不是 bool 值以访问每个字段。

// Sample storage and a sample row
const selected = {};
const row = { cuip: '.A0100', quantity: 38 };

// Add a row
selected[row.cuip] = row;

// Check if a row is selected
const isRowSelected = selected.hasOwnProperty(row.cuip);

// Remove a row
delete selected[row.cuip];

您可以按照您已经演示的方式将其绑定(bind)到您的状态管理。
请参阅关于 the delete operator 的 MDN 文章和 Object.hasOwnProperty()了解更多信息。

关于javascript - 将整行保存到状态数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56173162/

相关文章:

javascript - 什么是焦点范围?

javascript - jQuery HeapBox "this"事件内部

javascript - JavaScript 中的运算符 : 5. 0//2.0 = 5?

javascript - 在 for 循环中使用两个数组

c - 如何在 C 中比较两个二维数组的维度?

javascript - 使用通用操作和 reducer 简化 redux

javascript - 什么时候是调用 webview.clearData 的最佳时间

java - 从文本文件中获取值并将它们放入数组中

javascript - es6中如何写子组件(child components)?

javascript - 具有不同路由器的 Bobril 框架