[英]How to convert an array with one object and multiple keys into an array of multiple objects using those keys and their values?
我有一個像這樣的數組,里面有一個 object:
FirstArray = [{
"category": "None",
"ARFE": 553.5,
"BV": 900,
"RF rfeer": 0,
.....
}]
我想轉換它,以便 object 中的每個鍵值對(其中值是一個數字)都在它自己的 object 中,如下所示:
NewArray = [{
name: "ARFE",
value: 553.05
}, {
name: "BV",
value: 900
}, {
name: "RF rfeer",
value: 0
}, .....]
在這里,每個鍵都被分配了一個名為name的新鍵,而原始鍵的值被分配了一個名為value的新鍵。 然后將這些對放入陣列內自己的 object 中。
請注意, “類別”:“無”在數組中不是它自己的 object,因為“無”是非數字的。
還需要注意的是,可能有許多鍵值對,因此不僅限於上述項目(例如,“ARFE”:553.5 等)
到目前為止我所擁有的:
我知道您可以將單個 object 分成多個對象:
NewArray = Object.entries(FirstArray).reduce((prev, [og, nw]) => {
let [name, value] = og.match(/\D+|\d+$/g)
prev[value] = { ...(prev[value] || {}), [name]: nw }
return prev;
}, {})
我也知道如何使用新密鑰創建一個新的 object,如下所示:
NewArray = Object.assign(
...Object.entries(FirstArray).map(([key, value]) => ({ [key]: name }))
);
但是,我無法將所有內容放在一起。 我如何能夠從 FirstArray 實現 NewArray?
你非常接近。 您需要做的就是指定名稱:
const data = { "category": "None", "ARFE": 553.5, "BV": 900, "RF rfeer": 0 }; const result = Object.entries(data).filter(([_, value]) => typeof value === 'number').map(([key, value]) => ({ name: key, value })); console.log(result);
此外,如果您不希望{ "name": "category", "value": "None" }
包含在結果中,您可以過濾它:
const result = Object
.entries(data)
.filter(([ key ]) => key !== 'category')
.map(([key, value]) => ({ name: key, value }));
Object.entries
on array 根本沒有意義,在 object 上使用它
const FirstArray = [{ "category": "None", "ARFE": 553.5, "BV": 900, "RF rfeer": 0, }] const newObject = Object.entries(FirstArray[0]).reduce((array, [key, value]) => { return [...array, { name: key, value }] }, []) console.log(newObject)
reduce
不是 go 的正確方法。 只需使用map
:
Object.entries(FirstArray[0])
.filter(x => !isNaN(x[1])) // filter out non-numeric values
.map(([name, value]) => ({name, value}))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.