簡體   English   中英

如何使用這些鍵及其值將具有一個 object 和多個鍵的數組轉換為多個對象的數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM