ReactJS:更新 props - 将 17 object 数组的 2 key:value 对变成一个有 3 key:value 对的数组
ReactJS: updating props - turning a 17 object array of 2 key:value pairs into one with 3 key:value pairs
我相当 new/junior 前端编程,但我正在帮助另一个人为应用程序构建网络 UI。在大多数情况下,我已经学到了足够多的东西,可以对所有内容有一个基本的了解,尽管我正在尝试添加一个有点困难的功能。
长话短说,我有两个 ag-grids(使用 reactJS)。主要的一个保存数据并且可以被过滤,我正在尝试制作第二个,它不仅保存主要的列名,而且还动态列出所应用的过滤器。第二个网格就像用户
的 assistant/helper 网格
到目前为止,我的理解帮助我实现了一半(我已经设法用主网格中的所有列 headers 填充第二个 ag-grid)。
列标题数据是从道具中存储和提取的。类似于:
行数据:this.props.report.view.columns
如果你 运行 console.log(this.props.report.view.columns)(我使用的是 chrome 开发者工具的控制台),你会看到一个包含 17 objects 保存列信息。结构如下所示:
report: Object
|
--view: Object
|
--columns: Array(17)
|
--0: Object
| |
| -- field: "testColumn"
| headerName: "testColumn"
|
--1: Object
--2: Object
--3: Object
.
.
.
--16: Object
我只想说这看起来像一个包含 17 个 object 的数组,每个包含两个 key:value 对。我想要做的是添加第三个键值对
我有另一个道具,它给出 key:value 对仅应用了过滤器的列(即 columnName:blah , filter:blahh ,其中列名存储在不同的键名下)。
我打算实现的伪代码是这样的:
For EACH element in the 17 Object array (this.props.report.view.columns)
if headername = columnName (i.e. from column from filter prop)
THEN
add new key:value pair headerName:filter; to that object element
ELSE
add new key:value pair headerName:''; (an empty value) to that object
我最终要做的是将这个由 2 个 key:value 对组成的 17 object 数组更改为具有 3 个键值对的 17 object 数组
这样的事情可能吗?如果可以,我可以得到一些建议吗?
我有点担心我使用的整个计划是错误的。我的资深同事建议我使用回调来使用不同的计划,但我没有看到如果没有重大代码更改怎么可能(这就是为什么我坚持我的直觉)
用map
方法? https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map
const data = [
{a: 7, b: 0},
{a: 4, b: 7},
{a: 9, b: 6},
{a: 1, b: 7},
];
const newData = data.map(currObj => ({...currObj, c: 0}));
console.log(newData);
我相当 new/junior 前端编程,但我正在帮助另一个人为应用程序构建网络 UI。在大多数情况下,我已经学到了足够多的东西,可以对所有内容有一个基本的了解,尽管我正在尝试添加一个有点困难的功能。
长话短说,我有两个 ag-grids(使用 reactJS)。主要的一个保存数据并且可以被过滤,我正在尝试制作第二个,它不仅保存主要的列名,而且还动态列出所应用的过滤器。第二个网格就像用户
的 assistant/helper 网格到目前为止,我的理解帮助我实现了一半(我已经设法用主网格中的所有列 headers 填充第二个 ag-grid)。
列标题数据是从道具中存储和提取的。类似于:
行数据:this.props.report.view.columns
如果你 运行 console.log(this.props.report.view.columns)(我使用的是 chrome 开发者工具的控制台),你会看到一个包含 17 objects 保存列信息。结构如下所示:
report: Object
|
--view: Object
|
--columns: Array(17)
|
--0: Object
| |
| -- field: "testColumn"
| headerName: "testColumn"
|
--1: Object
--2: Object
--3: Object
.
.
.
--16: Object
我只想说这看起来像一个包含 17 个 object 的数组,每个包含两个 key:value 对。我想要做的是添加第三个键值对
我有另一个道具,它给出 key:value 对仅应用了过滤器的列(即 columnName:blah , filter:blahh ,其中列名存储在不同的键名下)。
我打算实现的伪代码是这样的:
For EACH element in the 17 Object array (this.props.report.view.columns)
if headername = columnName (i.e. from column from filter prop)
THEN
add new key:value pair headerName:filter; to that object element
ELSE
add new key:value pair headerName:''; (an empty value) to that object
我最终要做的是将这个由 2 个 key:value 对组成的 17 object 数组更改为具有 3 个键值对的 17 object 数组 这样的事情可能吗?如果可以,我可以得到一些建议吗? 我有点担心我使用的整个计划是错误的。我的资深同事建议我使用回调来使用不同的计划,但我没有看到如果没有重大代码更改怎么可能(这就是为什么我坚持我的直觉)
用map
方法? https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map
const data = [
{a: 7, b: 0},
{a: 4, b: 7},
{a: 9, b: 6},
{a: 1, b: 7},
];
const newData = data.map(currObj => ({...currObj, c: 0}));
console.log(newData);