![](/img/trans.png)
[英]How to destruct array of numbers in an object and combine to one in javascript?
[英]Destruct object of array in JavaScript
嗨,伙計們,我有一組對象,我想銷毀它們。 以下是數組的摘錄。
[
{
"Area": "Werk Produktivität [%] - Target",
"Jan": 86.21397507374327,
"Feb": 86.0570021973368,
"Mrz": 88.70898346258058,
"Apr": 85.29801908413164,
"May": 85.07431241640211
},
{
"Area": "Werk Produktivität [%] - Actual",
"Jan": 84.17054711398421,
"Feb": 83.80826026601528,
"Mrz": 84.11553769971036,
"Apr": 83.76460916731,
"May": 82.69773876702813
}
]
我現在嘗試實現的是將數組拆分為以下內容:
[
{
"Area": "Werk Produktivität [%] - Target",
"Jan": 86.21397507374327,
},
{
"Area": "Werk Produktivität [%] - Target",
"Feb": 86.0570021973368,
},
{
"Area": "Werk Produktivität [%] - Target",
"Mrz": 88.70898346258058,
},
{
"Area": "Werk Produktivität [%] - Target",
"Apr": 85.29801908413164,
},
{
"Area": "Werk Produktivität [%] - Target",
"May": 85.07431241640211,
},
{
"Area": "Werk Produktivität [%] - Actual",
"Jan": 84.17054711398421,
},
{
"Area": "Werk Produktivität [%] - Actual",
"Feb": 83.80826026601528,
},
{
"Area": "Werk Produktivität [%] - Actual",
"Mrz": 84.11553769971036,
},
{
"Area": "Werk Produktivität [%] - Actual",
"Apr": 83.76460916731,
},
{
"Area": "Werk Produktivität [%] - Actual",
"May": 82.69773876702813
}
我正在考慮以下列方式使用...rest
參數,但我只得到數組的最后 5 項。 請注意,obj 是數組對象的摘錄。
const fn = ({ Area, ...rest }) =>
Object.values(rest)
.map(Month => ({
Area,
Month
}))
})
const result = fn(obj)
不確定obj
in result = fn(obj)
在這里做什么。 我認為您正在數組上調用map
並獲取結果二維數組中的第一項。 您只需要使用fn
作為回調在數組上調用flatMap
。
const output = inputArray.flatMap(fn)
或者
const output = inputArray.map(fn).flat()
fn
也需要稍微調整一下。 您需要獲取rest
對象的全部內容,因為您還需要對象的密鑰
Object.entries(rest)
.map(([key, value]) => ({ Area, [key]: value }))
const input = [ { "Area": "Werk Produktivität [%] - Target", "Jan": 86.21397507374327, "Feb": 86.0570021973368, "Mrz": 88.70898346258058, "Apr": 85.29801908413164, "May": 85.07431241640211 }, { "Area": "Werk Produktivität [%] - Actual", "Jan": 84.17054711398421, "Feb": 83.80826026601528, "Mrz": 84.11553769971036, "Apr": 83.76460916731, "May": 82.69773876702813 } ] const fn = ({ Area, ...rest }) => Object.entries(rest) .map(([key,value]) => ({ Area, [key]: value })) const output = input.flatMap(fn) console.log(output)
您可以使用reduce
和Object.entries
來獲得與以下內容相同的結果:
const data = [ { "Area": "Werk Produktivität [%] - Target", "Jan": 86.21397507374327, "Feb": 86.0570021973368, "Mrz": 88.70898346258058, "Apr": 85.29801908413164, "May": 85.07431241640211 }, { "Area": "Werk Produktivität [%] - Actual", "Jan": 84.17054711398421, "Feb": 83.80826026601528, "Mrz": 84.11553769971036, "Apr": 83.76460916731, "May": 82.69773876702813 } ] const result = data.reduce((res, {Area, ...rest}) => { Object.entries(rest).forEach(([key, value]) => res.push({Area, [key]: value})) return res }, []) console.log(result)
您可以使用函數Array.prototype.reduce
及其內部的函數Array.prototype.map
來構建所需的對象。
const arr = [ { "Area": "Werk Produktivität [%] - Target", "Jan": 86.21397507374327, "Feb": 86.0570021973368, "Mrz": 88.70898346258058, "Apr": 85.29801908413164, "May": 85.07431241640211 }, { "Area": "Werk Produktivität [%] - Actual", "Jan": 84.17054711398421, "Feb": 83.80826026601528, "Mrz": 84.11553769971036, "Apr": 83.76460916731, "May": 82.69773876702813 }]; const result = arr.reduce((a, {Area, ...months}) => { return [...a, ...Object.entries(months).map(([month, value]) => ({Area, [month]: value}))]; }, []); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
const ary = [
{
"Area": "Werk Produktivität [%] - Target",
"Jan": 86.21397507374327,
"Feb": 86.0570021973368,
"Mrz": 88.70898346258058,
"Apr": 85.29801908413164,
"May": 85.07431241640211
},
{
"Area": "Werk Produktivität [%] - Actual",
"Jan": 84.17054711398421,
"Feb": 83.80826026601528,
"Mrz": 84.11553769971036,
"Apr": 83.76460916731,
"May": 82.69773876702813
}
];
const newAry = [];
for(item of ary){
const {
Area,
...months
}=item;
for([k,v] of Object.entries(months)){
newAry.push({Area,[k]:v});
}
}
console.log(newAry);
希望這對你有幫助!!!
您可以通過使用Destructuring assignment
來簡單地實現這一點。
演示:
const arr = [ { "Area": "Werk Produktivität [%] - Target", "Jan": 86.21397507374327, "Feb": 86.0570021973368, "Mrz": 88.70898346258058, "Apr": 85.29801908413164, "May": 85.07431241640211 }, { "Area": "Werk Produktivität [%] - Actual", "Jan": 84.17054711398421, "Feb": 83.80826026601528, "Mrz": 84.11553769971036, "Apr": 83.76460916731, "May": 82.69773876702813 } ]; const res = []; arr.forEach(obj => { const {Area, ...remaining} = obj; Object.keys(remaining).forEach(month => { res.push({ Area, [month]: remaining[month] }) }) }) console.log(res);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.