繁体   English   中英

如何在javascript中使用对象数组映射属性

[英]how to map property with array of object inside in javascript

我只是想使用map完全返回数组,然后再开始下一个函数。 但是我在安慰它时收到不完整的数组

这是我的示例数组:

data = [{
        "a": 1,
        "b": 5,
        "c": 9,
        "d": 1,
        "e": 4,
        "f": 44,
        "g": 23,
        "h": 12,
        "i": 22,
        "j": 23,
        "k": [{
            "a": 1,
            "b": 5,
            "c": 9,
            "d": 1
        }, {
            "a": 1,
            "b": 5,
            "c": 9,
            "d": 1
        }]
    },
    {
        "a": 2,
        "b": 6,
        "c": 10,
        "d": 1,
        "e": 4,
        "f": 44,
        "g": 23,
        "h": 12,
        "i": 22,
        "j": 23,
        "k": [{
            "a": 1,
            "b": 5,
            "c": 9,
            "d": 1
        }, {
            "a": 1,
            "b": 5,
            "c": 9,
            "d": 1
        }]
    },
    {
        "a": 3,
        "b": 7,
        "c": 11,
        "d": 1,
        "e": 4,
        "f": 44,
        "g": 23,
        "h": 12,
        "i": 22,
        "j": 23,
        "k": [{
            "a": 1,
            "b": 5,
            "c": 9,
            "d": 1
        }, {
            "a": 1,
            "b": 5,
            "c": 9,
            "d": 1
        }]
    },
    {
        "a": 4,
        "b": 8,
        "c": 12,
        "d": 1,
        "e": 4,
        "f": 44,
        "g": 23,
        "h": 12,
        "i": 22,
        "j": 23,
        "k": [{
            "a": 1,
            "b": 5,
            "c": 9,
            "d": 1
        }, {
            "a": 1,
            "b": 5,
            "c": 9,
            "d": 1
        }]
    }
]

var result = data.map(x=>({...x}));     
console.log(result);

这是我的数组时,我安慰它:

[{
        "a": 1,
        "b": 5,
        "c": 9,
        "d": 1,
        "e": 4,
        "f": 44,
        "g": 23,
        "h": 12,
        "i": 22,
        "j": 23,
        "k": []
    },
    {
        "a": 2,
        "b": 6,
        "c": 10,
        "d": 1,
        "e": 4,
        "f": 44,
        "g": 23,
        "h": 12,
        "i": 22,
        "j": 23,
        "k": []
    },
    {
        "a": 3,
        "b": 7,
        "c": 11,
        "d": 1,
        "e": 4,
        "f": 44,
        "g": 23,
        "h": 12,
        "i": 22,
        "j": 23,
        "k": []
    },
    {
        "a": 4,
        "b": 8,
        "c": 12,
        "d": 1,
        "e": 4,
        "f": 44,
        "g": 23,
        "h": 12,
        "i": 22,
        "j": 23,
        "k": []
    }
]

当我使用.map()函数时,我希望数组完整。

传播只是一个浅表副本-因此不会复制内部数组。

对于简单的深层副本,请使用JSON.stringifyJSON.parse

 const data = [{"a":1,"b":5,"c":9,"d":1,"e":4,"f":44,"g":23,"h":12,"i":22,"j":23,"k":[{"a":1,"b":5,"c":9,"d":1},{"a":1,"b":5,"c":9,"d":1}]},{"a":2,"b":6,"c":10,"d":1,"e":4,"f":44,"g":23,"h":12,"i":22,"j":23,"k":[{"a":1,"b":5,"c":9,"d":1},{"a":1,"b":5,"c":9,"d":1}]},{"a":3,"b":7,"c":11,"d":1,"e":4,"f":44,"g":23,"h":12,"i":22,"j":23,"k":[{"a":1,"b":5,"c":9,"d":1},{"a":1,"b":5,"c":9,"d":1}]},{"a":4,"b":8,"c":12,"d":1,"e":4,"f":44,"g":23,"h":12,"i":22,"j":23,"k":[{"a":1,"b":5,"c":9,"d":1},{"a":1,"b":5,"c":9,"d":1}]}]; const res = data.map(x => JSON.parse(JSON.stringify(x))); console.log(res); 
 .as-console-wrapper { max-height: 100% !important; top: auto; } 

还有一个不太支持的Object.fromEntries此功能目前处于草拟阶段:

 const data = [{"a":1,"b":5,"c":9,"d":1,"e":4,"f":44,"g":23,"h":12,"i":22,"j":23,"k":[{"a":1,"b":5,"c":9,"d":1},{"a":1,"b":5,"c":9,"d":1}]},{"a":2,"b":6,"c":10,"d":1,"e":4,"f":44,"g":23,"h":12,"i":22,"j":23,"k":[{"a":1,"b":5,"c":9,"d":1},{"a":1,"b":5,"c":9,"d":1}]},{"a":3,"b":7,"c":11,"d":1,"e":4,"f":44,"g":23,"h":12,"i":22,"j":23,"k":[{"a":1,"b":5,"c":9,"d":1},{"a":1,"b":5,"c":9,"d":1}]},{"a":4,"b":8,"c":12,"d":1,"e":4,"f":44,"g":23,"h":12,"i":22,"j":23,"k":[{"a":1,"b":5,"c":9,"d":1},{"a":1,"b":5,"c":9,"d":1}]}]; const res = data.map(x => Object.fromEntries(Object.entries(x))); console.log(res); 
 .as-console-wrapper { max-height: 100% !important; top: auto; } 

这不是因为地图功能,而是因为控制台。 如果控制台太长,则可以剪切输出。 如果您需要查看完整结果,可以进行

console.log(JSON.stringify(result));

或其他一些代码修改嵌套数组( data[0].k = [] )。 由于要进行高级复制,因此您将看到空数组。 在这种情况下,您应该复制原始data 对于这种情况,您有一个非常有用的lib lodash

因此,您可以执行以下操作:

var result = _.cloneDeep(data);

暂无
暂无

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

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