繁体   English   中英

"如何根据对象数组中的先前值更新值?"

How to update a value based on previous value in an array of objects?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试根据另一个属性的先前值更新每个当前值。
实际上,我需要用日期来完成任务,但为了简单起见,我将用简单的数字来解释我的问题。 我有

  1. Start ,即1
  2. Stop ,已定义
  3. End
  4. Duration ,已定义

我的目标

  • Start = 前一个索引的Duration + 前一个索引的End
  • End = 当前值的Start + Stop

为了说明,我添加了表格的屏幕截图,它应该是什么样子。
所需视图

在此处输入图像描述

目前来看

在此处输入图像描述

下面的代码和 沙箱链接

import React from "react";
import { AgGridReact } from "ag-grid-react";
import "./styles.css";
import "ag-grid-community/dist/styles/ag-grid.css";
import "ag-grid-community/dist/styles/ag-theme-alpine.css";
function App() {
  let start = 1;
  const [gridApi, setGridApi] = React.useState(null);
  const [gridColumnApi, setGridColumnApi] = React.useState(null);

  const onGridReady = (params) => {
    setGridApi(params.api);
    setGridColumnApi(params.columnApi);
  };

  const defaultColDef = {
    flex: 1,
    editable: true
  };

  const columnDefs = [
    {
      headerName: "Name",
      field: "name"
    },
    {
      headerName: "start",
      field: "updatedStart"
    },
    { headerName: "stop", field: "stop" },
    {
      headerName: "end",
      field: "end"
    },
    {
      headerName: "duration",
      field: "duration",
      colId: "duration"
    }
  ];
  const rowData = React.useMemo(
    () => [
      {
        name: "John",
        stop: 10,
        duration: 5
      },
      {
        name: "David",
        stop: 15,
        duration: 8
      },
      {
        name: "Dan",
        stop: 20,
        duration: 6
      }
    ],
    []
  );

  const rowDataWithStart = React.useMemo(() => {
    return (
      rowData &&
      rowData.map((row, i) => ({
        ...row,
        start: start
      }))
    );
  }, [start, rowData]);

  const rowDataWitEnd = React.useMemo(() => {
    return (
      rowDataWithStart &&
      rowDataWithStart.map((row, i) => ({
        ...row,
        end: row.start + row.stop
      }))
    );
  }, [rowDataWithStart]);




//this function(rowDataWitUpdatedStart) should get the previous value of end and duration and get the total
  const rowDataWitUpdatedStart = React.useMemo(() => { 
    return (
      rowDataWitEnd &&
      rowDataWitEnd.map((row, i) => ({
        ...row,
        updatedStart: row.end + row.duration
      }))
    );
  }, [rowDataWitEnd]);

  return (
    <div className="App">
      <h1 align="center">React-App</h1>
      <div className="ag-theme-alpine">
        <AgGridReact
          columnDefs={columnDefs}
          rowData={rowDataWitUpdatedStart}
          defaultColDef={defaultColDef}
          domLayout={"autoHeight"}
          onGridReady={onGridReady}
        ></AgGridReact>
      </div>
    </div>
  );
}

export default App;

我尝试使用我使用的库中的valueGetter来完成任务: AG Grid ,但似乎不是最好的方法。 请参阅我以前的问题任何帮助将不胜感激

问题暂未有回复.您可以查看右边的相关问题.
4 如何基于其先前值更新mongo doc值

我有一个名为Menu的mongo集合,其中包含项数组 我有一个API,该API用于每1小时点击一次以更新价格,该价格会返回每个商品价格为JSON的数组 在更新成本时,我还想更新成本百分比,如下所示: 如果响应是 那会是 考虑在应用程序启动时汉堡的初始成本是 ...

5 如何在 React 中映射对象数组,然后根据先前的值有条件地渲染组件?

我有我想要创建的调度视图。 但是,我希望日期框仅在具有唯一日期(然后是下面列出的时间列表)时才会出现。这是代码和框。 我希望它看起来像这样。 但目前日期框在每次迭代中都呈现。 我无法根据当前和上一个日期有条件地呈现日期框。 我一直在尝试映射数据并访问先前迭代的日期并比较它们是否相等,但它不像我想 ...

6 根据上一行的值更新值

我有下表: 这是一些示例数据: 我的目标:根据其他列中的值和 [Value] 列中的先前值更新 [Value] 列中的所有值。 主键是date+personId 。 用伪代码解释,我的逻辑需要类似于: 等等 - 这捕获了一般的 T-SQL 代码逻辑.. 我只想更新[Value]列,其 ...

7 基于先前值的连续更新变量值

我正在尝试根据先前更新的值来更新销售列的值。 例如 - 表A 我想根据增长来更新销售价值。 因此,第2天将是第1天的销售额*增长。 而第3天将是第2天更新的销售额*增长。 在netezza中不循环就可能吗? 感谢大家。 ...

8 根据先前的mysql更新值更新值

我浏览了以前可能与此相关的主题,但没有发现与我的问题有关的任何内容。 我的问题是,您可以根据先前更新的行在MySql中更新日期时间值吗? 为了更好地解释我在想什么,这里是一条伪SQL语句来解释我在寻找什么(不,这不是真正的SQL): 因此,在更新中,时间会像这样: 但要根 ...

2015-09-08 05:59:12 1 75   mysql
9 根据先前的日期值更新mysql值

我有一个具有以下结构的mysql表 当name_id , class_id和currency相等时,我想根据当日值与上一个日期值之间的差异来更新change列。 。 。 因此在此小节摘录中,仅第2行将更新为-0.10 ,第5行将更新为0.01 。 有400,000行,它们都有 ...

10 删除以前的值并更新数组

从数组中删除先前的值并使用剩余数据进行更新时遇到问题。 例如,在代码JSFiddle中,数组中有四个值:BMW,Nissan,Volvo和Saab。 因此,一旦我“按下按钮”显示“ BMW”或任何其他值,则下次重新加载时应仅在其余值(即日产,沃尔沃和萨博)内随机进行。 直到 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM