[英]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.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; }
這不是因為地圖功能,而是因為控制台。 如果控制台太長,則可以剪切輸出。 如果您需要查看完整結果,可以進行
console.log(JSON.stringify(result));
或其他一些代碼修改嵌套數組( data[0].k = []
)。 由於要進行高級復制,因此您將看到空數組。 在這種情況下,您應該復制原始data
。 對於這種情況,您有一個非常有用的lib lodash
因此,您可以執行以下操作:
var result = _.cloneDeep(data);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.