我試圖迭代一個里面有很多小物件的物件。我想有條件地在每個較小的物件中插入一個鍵值對例如:
const answers = {
"question1": {
answer: "Poor",
metric: "focus"
},
"question2": {
answer: {agree: "yes", duration: "10"}
metric: "exercise"
}
}
所以讓我們說問題 1 中的答案可以是差、好或優秀,差等于 1 分,好 5 分和優秀 10 分。根據問題 1 中的答案,我想添加一個關鍵值對如分數:1 進入 question1 物件
然后對于問題 2,我們查看持續時間,持續時間為 10 給我們的分數為 10,因此我們插入鍵值對,如 score: 10
所以最后我想回傳一個看起來像這樣的物件:
newAnswers = {
"question1": {
answer: "Poor",
metric: "focus",
score: 1
},
"question2": {
answer: {agree: "yes", duration: "10"}
metric: "exercise",
score: 10
}
}
在這個例子中,為了簡單起見,我只展示了兩個問題,但實際上可能有很多,同樣的邏輯將適用于所有其他問題。
提前致謝
uj5u.com熱心網友回復:
基本上你需要的是一個回圈邏輯
像這樣的事情會有所幫助。
邏輯
- 回圈遍歷物件中的條目
- 檢查
answer每個物件中的鍵型別 - 如果型別是一個字串做
"poor", "good", "excellent"選項之間的映射。 - 如果其物件檢查有效性
duration并將其分配給分數。
作業小提琴
const answers = {
"question1": {
answer: "Poor",
metric: "focus"
},
"question2": {
answer: {agree: "yes", duration: "10"},
metric: "exercise"
}
};
Object.entries(answers).forEach((item) => {
const answer = item[1].answer;
switch (typeof answer) {
case "string":
console.log(answer);
const answerOptions = ["poor", "good", "excellent"];
const scoreOptions = [1, 5, 10];
const index = answerOptions.indexOf(answer.toLowerCase());
if(index !== -1) {
item[1].score = scoreOptions[index];
}
break;
case "object":
if (answer.duration && !isNaN(answer.duration)) {
item[1].score = answer.duration;
}
break;
}
});
console.log(answers)
uj5u.com熱心網友回復:
如果我正確理解您的問題,問題是如何為每個 JSON 物件插入一個新屬性。如果是這種情況,您可以執行以下操作。
answers["question1"]["score"] = 1;
忽略條件檢查您的邏輯(即條件陳述句),迭代可能是:
$.each(answers, (q) => {
q["score"] = x;
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/334300.html
標籤:javascript 循环 目的 哎呀 javascript对象
