javascript - 如何在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.stringify
和JSON.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; }
推荐阅读
- mongodb - 如何更改在 ECS 上运行的 mongo 的配置文件
- php - 产品自定义分类术语循环 - 图像的 src 为空
- r - 根据 r 中的其他列对一个列表中的一列的所有值进行分组
- python - 合并两个共享相同列值的数据框
- html - -1 的 tabIndex 是否与没有 tabIndex 相同,还是应该使用 undefined 或 null?
- php - 覆盖“porto”架构中的类
- artifactory - Artifactory 服务器抛出错误:服务不可用
- dictionary - pl/sql中使用数字作为索引的键值映射
- airflow - 在气流传感器中使用 XCom
- php - 构建目录并从另一个文件访问文件