我正在嘗試從帶有資訊的發布請求中“自動”對它們進行排序。
- 每個類別由一個數字定義(0 -> 1 -> ....)
- 每個類別 1 的標題由其編號定義,例如:“0”:“飛機在飛行嗎?”
- 從 A 到 E 的 5 個問題,其名稱中包含值 q 例如:“0-qA”:“也許”
- 以及每個類別的答案,例如:“0-A”:“on”,但如果未檢查 0-B,則將一無所有。
這是來自 req.body 的內容:
{
'0': 'Are planes flying ?',
'1': 'Are tomatoes flying ?',
title: 'What flies',
'0-qA': 'Maybe,
'0-A': 'on'
'0-qB': 'Yes',
'0-qC': 'No',
'0-C': 'on',
'0-qD': 'Ask to Patrick',
'0-D': 'on',
'0-qE': 'Answer C',
'1-qA': 'Maybe no',
'1-qB': 'Yes',
'1-qC': 'No',
'1-C': 'on',
'1-qD': 'Do not ask me',
'1-D': 'on',
'1-qE': 'Answer A',
'1-E': 'on'
'num': '1' //equal to how many questions I have
}
然后我想“排序”它們看起來像這樣:
{
"title": "What flies",
"questions": [
{
"question": "Are planes flying ?",
"choix": [
{
"id": "A",
"text": "Maybe"
},
{
"id": "B",
"text": "Yes"
},
{
"id": "C",
"text": "No"
},
{
"id": "D",
"text": "Ask to patrick"
},
{
"id": "E",
"text": "Answer C"
}
],
"answers": [
"0-A",
"0-C",
"0-D"
]
},
{
"question": "Are tomatoes flying ?",
"choix": [
{
"id": "A",
"text": "Maybe no"
},
{
"id": "B",
"text": "Yes"
},
{
"id": "C",
"text": "No"
},
{
"id": "D",
"text": "Don't ask me"
},
{
"id": "E",
"text": "Answer A"
}
],
"answers": [
"1-C",
"1-D",
"1-E"
]
},
]
}
我嘗試過使用 num withfor(i in num)但它一無所獲。提前感謝您能給我帶來的任何答案!
uj5u.com熱心網友回復:
您可以迭代資料的鍵,回圈從0to的值,data['num']并根據鍵的模式匹配選擇和答案(選擇以數字開頭,然后-q答案以數字-和字母 not 開頭q:
const data = {
'0': 'Are planes flying ?',
'1': 'Are tomatoes flying ?',
'title': 'What flies',
'0-qA': 'Maybe',
'0-A': 'on',
'0-qB': 'Yes',
'0-qC': 'No',
'0-C': 'on',
'0-qD': 'Ask to Patrick',
'0-D': 'on',
'0-qE': 'Answer C',
'1-qA': 'Maybe no',
'1-qB': 'Yes',
'1-qC': 'No',
'1-C': 'on',
'1-qD': 'Do not ask me',
'1-D': 'on',
'1-qE': 'Answer A',
'1-E': 'on',
'num': '1' //equal to how many questions I have
};
let result = {
'title': data['title'],
'questions': []
};
for (let i = 0; i <= parseInt(data['num']); i ) {
let key = i '';
let question = {
'question': data[key],
'choix': Object.keys(data)
.filter(k => k.startsWith(`${key}-q`))
.map(k => ({
id: k.split('q')[1],
text: data[k]
})),
'answers': Object.keys(data)
.filter(k => k.match(new RegExp(`${key}-[^q]\$`)))
};
result['questions'].push(question);
}
console.log(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/482208.html
標籤:javascript 节点.js json 排序
上一篇:為什么我的選擇排序程式不起作用?
