基于键 javascript 的 Concat 对象数组
Concat object array based on keys javascript
我有如下数组
{
"key1": [
{ "prop1": "26181712", "prop2": "2618112" },
{ "prop1": "26181734", "prop2": "2618144" }
],
"Key2": [
{ "prop1": "2618174", "prop2": "2618542" }
]
}
预期结果如下。
[
{ "key": "key1", "prop1": "26181712", "prop2": "2618112" },
{ "key": "key1", "prop1": "26181734", "prop2": "2618144" },
{ "key": "Key2", "prop1": "2618174", "prop2": "2618542" }
]
我不太擅长数组方法。这似乎是反向减少。它可以通过 for 循环实现,但我想知道 better/efficient 使用 simple/less/es6 代码的方法。
展开key,映射内部数组与{key}合并,展平
data={
"key1": [
{ "prop1": "26181712", "prop2": "2618112" },
{ "prop1": "26181734", "prop2": "2618144" }
],
"Key2": [
{ "prop1": "2618174", "prop2": "2618542" }
]
}
console.log(
Object.entries(data).flatMap(([key,v])=>v.map(x=>({key, ...x})))
)
你遍历你的键,在你映射的每个键值上并添加一个新的 属性 到它 key
.
因为这是一个数组,所以您可以使用扩展运算符将其扩展到 result
数组中。
let data = {
"key1": [
{ "prop1": "26181712", "prop2": "2618112" },
{ "prop1": "26181734", "prop2": "2618144" }
],
"Key2": [
{ "prop1": "2618174", "prop2": "2618542" }
]
}
let result = [];
for(let prop in data){
let item = data[prop].map(el => ({key: prop, ...el}))
result = [...result, ...item]
}
console.log(result);
嵌套地图和扁平化的最简单方法。
const data = {
"key1": [
{ "prop1": "26181712", "prop2": "2618112" },
{ "prop1": "26181734", "prop2": "2618144" }
],
"Key2": [
{ "prop1": "2618174", "prop2": "2618542" }
]
};
console.log(
Object.keys(data).map(i => data[i].map(j => (Object.assign({'key': i}, j)))).flat()
);
我有如下数组
{
"key1": [
{ "prop1": "26181712", "prop2": "2618112" },
{ "prop1": "26181734", "prop2": "2618144" }
],
"Key2": [
{ "prop1": "2618174", "prop2": "2618542" }
]
}
预期结果如下。
[
{ "key": "key1", "prop1": "26181712", "prop2": "2618112" },
{ "key": "key1", "prop1": "26181734", "prop2": "2618144" },
{ "key": "Key2", "prop1": "2618174", "prop2": "2618542" }
]
我不太擅长数组方法。这似乎是反向减少。它可以通过 for 循环实现,但我想知道 better/efficient 使用 simple/less/es6 代码的方法。
展开key,映射内部数组与{key}合并,展平
data={
"key1": [
{ "prop1": "26181712", "prop2": "2618112" },
{ "prop1": "26181734", "prop2": "2618144" }
],
"Key2": [
{ "prop1": "2618174", "prop2": "2618542" }
]
}
console.log(
Object.entries(data).flatMap(([key,v])=>v.map(x=>({key, ...x})))
)
你遍历你的键,在你映射的每个键值上并添加一个新的 属性 到它 key
.
因为这是一个数组,所以您可以使用扩展运算符将其扩展到 result
数组中。
let data = {
"key1": [
{ "prop1": "26181712", "prop2": "2618112" },
{ "prop1": "26181734", "prop2": "2618144" }
],
"Key2": [
{ "prop1": "2618174", "prop2": "2618542" }
]
}
let result = [];
for(let prop in data){
let item = data[prop].map(el => ({key: prop, ...el}))
result = [...result, ...item]
}
console.log(result);
嵌套地图和扁平化的最简单方法。
const data = {
"key1": [
{ "prop1": "26181712", "prop2": "2618112" },
{ "prop1": "26181734", "prop2": "2618144" }
],
"Key2": [
{ "prop1": "2618174", "prop2": "2618542" }
]
};
console.log(
Object.keys(data).map(i => data[i].map(j => (Object.assign({'key': i}, j)))).flat()
);