給定以下 json 物件
{
"Item 1": {
title: 'Item 1',
sub: {
left: {
prop1: '1',
prop2: '2',
prop3: '3',
},
right: {
prop1: '4',
prop2: '5',
prop3: '6',
},
},
},
"Item 2": {
title: 'Item 2',
sub: {
left: {
prop1: '7',
prop2: '8',
prop3: '9',
},
right: {
prop1: '10',
prop2: '11',
prop3: '12',
},
},
}
}
對于串列中的每個單獨物件,我正在嘗試將“左”和“右”中的所有值相互匹配。可能有更多屬性(例如 prop4),但給定物件的“左”和“右”將始終匹配。
在這個例子中,期望的結果是
[
[
[
"1",
"4"
],
[
"2",
"5"
],
[
"3",
"6"
]
],
[
[
"7",
"10"
],
[
"8",
"11"
],
[
"9",
"12"
]
]
]
我真的很討厭我只是在沒有進行中的代碼可以共享的情況下提出這個問題。我盡可能使用 Object.Keys 遍歷物件,然后設法使用 Reduce 按名稱(“prop1”)選擇屬性,但我無法選擇所有內容。
感謝您的任何幫助和指點
uj5u.com熱心網友回復:
這里是一個非常簡單的解決方案呼叫map()的Object.values()頂級物件,然后使用實用zip功能(參見這個問題的充分討論),以壓縮的left和right的值sub屬性。
const input = { 'Item 1': { title: 'Item 1', sub: { left: { prop1: '1', prop2: '2', prop3: '3', }, right: { prop1: '4', prop2: '5', prop3: '6', }, }, }, 'Item 2': { title: 'Item 2', sub: { left: { prop1: '7', prop2: '8', prop3: '9', }, right: { prop1: '10', prop2: '11', prop3: '12', }, }, }, };
const zip = (...rows) => [...rows[0]].map((_, c) => rows.map((row) => row[c]));
const result = Object.values(input).map(({ sub }) =>
zip(Object.values(sub.left), Object.values(sub.right)));
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/376079.html
標籤:javascript 数组 json 目的
上一篇:對JSON的最后五個物件求和
