嵌套结构最快的对象重新映射

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌套结构最快的对象重新映射相关的知识,希望对你有一定的参考价值。

假设我们有来自两个不同API的两个不同结构。每个都有不同的模式。

我们将此作为API#1的回报

[
    
        Id: "test1",
        Title: "label 1",
        Children: [
            
                Id: "test2",
                Title: "label 2",
                Children: [
                    
                        Id: "test3",
                        Title: "label 3"
                    
                ]
            
        ]
    
]

我需要将其转换为以下方案:

[
    
        value: "test1",
        label: "label 1",
        children: [
            
                value: "test2",
                label: "label 2",
                children: [
                    
                        value: "test3",
                        label: "label 3"
                    
                ]
            
        ]
    
]

到目前为止,我已经提出了这种方法:

const transformItem = ( Id, Title, Children ) => (
  value: Id,
  label: Title,
  children: Children ? transformData(Children) : null
);

const transformData = arr => arr.map(item => transformItem(item));

// Process data
const DataForApi2 = transformData(DataFromApi1);

[根据我执行的有限基准测试和我所知道的,在V8(占我们用户群的95%以上)中,这看起来足够快,因为我没有更改任何数据结构(完整的过热对象并保留了性能)并在范围内使用所有内容,以免浪费内存。如果每个客户端加载该应用程序仅执行一次(仅在登录后的第一次),则似乎具有线性复杂度,并且还不错。

假设我们有来自两个不同API的两个不同结构。每个都有不同的架构。我们从API#1返回此信息[ID:“ test1”,Title:“ label 1”,...

答案

就运行时而言,这是正确的,这可能是我们可以通过O(n)获得的最快的速度。

以上是关于嵌套结构最快的对象重新映射的主要内容,如果未能解决你的问题,请参考以下文章

根据嵌套键值对对象数组进行排序的最快方法

将 SqlDataReader 的结果映射到对象的最快方法

将SqlDataReader的结果映射到对象的最快方法

加载位图的最快方法,创建后重新使用位图

最快的数据结构,按顺序返回一系列项目

重新执行上一个命令的最快方法是?