我的对象数组如下所示:
[
{
"id": "0",
"title": "Exercise",
"main_object": {
"title": "Exercise",
"number1": {
"1": "10",
"2": "10",
"3": "5",
"4": "20",
},
"sumtype": {
"1": "+",
"2": "-",
"3": "x",
"4": ":",
},
"number2": {
"1": "10",
"2": "5",
"3": "2",
"4": "2",
}
}
}
]
现在我将如何使用它在 javascript(和 jquery,如果它有更简单的方法来执行此操作)中创建一个数组,该数组具有这些简单求和的答案。因此数组中的第一个字符串应该是 10 + 10,即 20。第二个字符串应该是 10 - 5,即 5。
我使用 $.getJSON 来检索我的 JSON,并尝试了一个简单的 for 循环,如下所示:
var sumanswers = [];
var keyamount = Object.keys(exerSumType);
var keylength = keyamount.length;
for (i = 0; i < keylength; i++) {
sumanswers[i] = exerNumber1[i] + exerSumType[i] + exerNumber2[i];
}
这只是给我一个字符串形式的总和(例如“10+10”),而我想要“20”。除此之外,由于某种原因,这并没有给我所有的总和,当我 console.log(sumanswers) 时它给了我这个:
0: NaN
1: "10+10"
2: "10-5"
3: "5x2"
因此,由于某种原因,我错过了最后的总和并得到 NaN 作为第一个总和。
任何帮助将不胜感激!
var exercises = [{
"id": "0",
"title": "Exercise",
"main_object": {
"title": "Exercise",
"number1": {
"1": "10",
"2": "10",
"3": "5",
"4": "20",
},
"sumtype": {
"1": "+",
"2": "-",
"3": "x",
"4": ":",
},
"number2": {
"1": "10",
"2": "5",
"3": "2",
"4": "2",
}
}
}]
var sumanswers = [];
var keyamount = Object.keys(exerSumType);
var keylength = keyamount.length;
for (i = 0; i < keylength; i++) {
sumanswers[i] = exerNumber1[i] + exerSumType[i] + exerNumber2[i];
console.log(sumanswers[i] , exerNumber1[i] , exerSumType[i] , exerNumber2[i])
}
最佳答案
您可以使用数组来存储可枚举数据。数组是从零开始的,因此索引从零开始。
要使用给定的操作数计算某个值,您可以将所有操作数作为键的对象。
var data = [{ id: "0", title: "Exercise", main_object: { title: "Exercise", number1: { "1": "10", "2": "10", "3": "5", "4": "20" }, sumtype: { "1": "+", "2": "-", "3": "x", "4": ":" }, number2: { "1": "10", "2": "5", "3": "2", "4": "2" } } }],
op = {
'+': (a, b) => +a + +b,
'-': (a, b) => a - b,
'x': (a, b) => a * b,
':': (a, b) => a / b
};
data.forEach(({ main_object }) => {
main_object.answers = {};
var { answers, number1, number2, sumtype } = main_object;
Object
.keys(main_object.number1)
.forEach(k => answers[k] = op[sumtype[k]](number1[k], number2[k]))
});
console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 如何循环对象数组来求解简单的求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51172506/