下面的 React 代码有啥区别?哪一种最有效或最有效?或者它们实际上是一样的?

Posted

技术标签:

【中文标题】下面的 React 代码有啥区别?哪一种最有效或最有效?或者它们实际上是一样的?【英文标题】:What are the difference between the React codes below? Which one is most efficient or effective? Or are they practically the same?下面的 React 代码有什么区别?哪一种最有效或最有效?或者它们实际上是一样的? 【发布时间】:2019-11-08 03:24:37 【问题描述】:

我目前正在进行一个项目,想出了两组不同的代码,想知道两者之间是否存在差异。

ReactJS(最新版本)

1.

columns.map(v => v.aggregate = (values) => values[0]);

2.

columns = columns.map( v => ( 
            ...v,
            aggregate : (values) => values[0]
        ))

预期结果:

const columns = [
    
        Header: 'ID',
        accessor: 'empid',
        shown: true,
        width: 130
    , 
        Header: 'Name',
        accessor: 'name',
        shown: true,
        aggregate: (values) => values[0],
        width: 130
    , 
        Header: 'Age',
        accessor: 'age',
        shown: true,
        aggregate: (values) => values[0],
    , 
        Header: 'Email',
        accessor: 'email',
        shown: true,
        aggregate: (values) => values[0],
        width: 150
    ,  
        Header: 'Birthday',
        accessor: 'birthday',
        shown: true,
        aggregate: (values) => values[0],
        width: 150
    
];

我将把它添加到 ReactTable 组件中,并通过 id 聚合透视。

【问题讨论】:

一个改变数组中的现有对象,另一个不改变 感谢@CertainPerformance 的回复! 【参考方案1】:

在第一个示例中,您直接对每个对象进行变异。在第二个示例中,您首先使用扩展运算符,因此您首先对每个对象进行浅层复制,而不是直接对其进行变异。

【讨论】:

感谢@JackBashford 的回复! 鉴于预期的输出,这两种方法会做同样的事情而没有问题吗?性能或效率如何? 第二个效率较低,因为它复制对象 - 因此对于非常大的数组(数千个),您最好使用第一个选项。 太棒了!再次感谢先生。上帝保佑你! @randyk69 为了提高效率,您不应该在不想创建新数组时使用map。只需编写一个for (const v of columns) 循环。为了提高效率,不要重新创建许多函数,只需将相同的函数分配给所有对象:function aggregate(values) return values[0] for (const v of columns) v.aggregate = aggregate;

以上是关于下面的 React 代码有啥区别?哪一种最有效或最有效?或者它们实际上是一样的?的主要内容,如果未能解决你的问题,请参考以下文章

ANSI 和非 ANSI 连接有啥区别,您推荐哪一种? [复制]

为啥 Go 中有两种声明变量的方式,有啥区别,用哪一种?

宏宇电商:当下流行的网络推广方式,你知道哪种最有效?

在组织 InfluxDB 数据库时,这两种方法中的哪一种最受青睐?

Java -- 每日一问:Java有几种文件拷贝方式?哪一种最高效?

.net类库和api mfc有啥区别呀??