我有兩級嵌套物件。我需要將其轉換為陣列。
var data = {
"6-7":
{
"0": "06:00",
"1": "06:10",
"2": "06:20",
"3": "06:30",
"4": "06:40",
"5": "06:50",
"6": null,
"7": null,
"8": null,
"9": null,
"10": null,
"11": null,
"12": null,
"13": null,
"14": null
},
"7-8":
{
"0": "07:00",
"1": "07:04",
"2": "07:08",
"3": "07:12",
"4": "07:16",
"5": "07:20",
"6": "07:24",
"7": "07:28",
"8": "07:32",
"9": "07:36",
"10": "07:40",
"11": "07:44",
"12": "07:48",
"13": "07:52",
"14": "07:56"
}
}
我試過Object.values(obj).map(elem => elem)
它轉換為陣列,但我仍然無法正確轉換它。我需要像這樣轉換它[["06:00","06:10",...],[07:00,07:04,...]]
感謝您提供任何幫助。
編輯:資料總是相同的形狀,不會更深
uj5u.com熱心網友回復:
var data = {
"6-7":
{
"0": "06:00",
"1": "06:10",
"2": "06:20",
"3": "06:30",
"4": "06:40",
"5": "06:50",
"6": null,
"7": null,
"8": null,
"9": null,
"10": null,
"11": null,
"12": null,
"13": null,
"14": null
},
"7-8":
{
"0": "07:00",
"1": "07:04",
"2": "07:08",
"3": "07:12",
"4": "07:16",
"5": "07:20",
"6": "07:24",
"7": "07:28",
"8": "07:32",
"9": "07:36",
"10": "07:40",
"11": "07:44",
"12": "07:48",
"13": "07:52",
"14": "07:56"
}
}
const array = Object.values(data).map(Object.values)
console.log(array);
uj5u.com熱心網友回復:
以下是實作目標的一種可能方式。
代碼片段
// recursive method to convert object to array
const myConv = obj => (
Object.entries(obj).flatMap( // iterate over key-value pairs
([k, v]) => (
v
? typeof v === 'object' // if nested value is object
? [myConv(v)] // nested-array & make the recursive call
: v // else, simply return the value as-is
: null // if value is null, return null
)
).filter(Boolean) // filter to remove falsy values
);
const data = {
"6-7": {
"0": "06:00",
"1": "06:10",
"2": "06:20",
"3": "06:30",
"4": "06:40",
"5": "06:50",
"6": null,
"7": null,
"8": null,
"9": null,
"10": null,
"11": null,
"12": null,
"13": null,
"14": null
},
"7-8": {
"0": "07:00",
"1": "07:04",
"2": "07:08",
"3": "07:12",
"4": "07:16",
"5": "07:20",
"6": "07:24",
"7": "07:28",
"8": "07:32",
"9": "07:36",
"10": "07:40",
"11": "07:44",
"12": "07:48",
"13": "07:52",
"14": "07:56"
}
};
console.log(myConv(data));
.as-console-wrapper { max-height: 100% !important; top: 0 }
解釋
在上面的代碼段中添加了行內注釋。
uj5u.com熱心網友回復:
您只需要值的值,所以它很簡單:
const result = Object.values(data).map( v => Object.values(v) );
如果你需要過濾掉nulls 那么它有點額外
const result = Object.values(data).map( v => Object.values(v).filter(x => x != null) );
后者的活生生的例子
var data={"6-7":{0:"06:00",1:"06:10",2:"06:20",3:"06:30",4:"06:40",5:"06:50",6:null,7:null,8:null,9:null,10:null,11:null,12:null,13:null,14:null},"7-8":{0:"07:00",1:"07:04",2:"07:08",3:"07:12",4:"07:16",5:"07:20",6:"07:24",7:"07:28",8:"07:32",9:"07:36",10:"07:40",11:"07:44",12:"07:48",13:"07:52",14:"07:56"}};
const result = Object.values(data).map( v => Object.values(v).filter(x => x != null) );
console.log(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/465629.html
標籤:javascript 数组
