如何添加两个键值,并在json中动态显示另一个键值使用javascript
How to add two key values and display in another keyvalue dynamically in json using javascript
我有以下json
var data = {
"total": "",
"scores": [{
"subject": "maths",
"marks": "50"
}, {
"subject": "science",
"marks": "75"
}]
};
现在在总数中,值应该是125,应该自动更新。同样在scores键中,值也会动态出现。所以所有的标记都应该自动添加并显示在一起。我怎么用javascript来做呢。有人能帮帮我吗?谢谢!
预计var data = {
"total": "125",
"scores": [{
"subject": "maths",
"marks": "50"
}, {
"subject": "science",
"marks": "75"
}]
};
您可以使用reduce()
计算total,然后将其分配给data.total
var data = {
"total": "",
"scores": [{
"subject": "maths",
"marks": "50"
}, {
"subject": "science",
"marks": "75"
}]
}
var total = data.scores.reduce(function(a, b) {
return a + parseInt(b.marks);
}, 0)
data.total = total;
console.log(data)
您可以应用getter并减少分数的值。
var data = {
get total() {
return this.scores.reduce(function (r, a) { return r + +a.marks; }, 0)
},
scores: [{ subject: "maths", marks: "50" }, { subject: "science", marks: "75" }]
};
console.log(data.total);
你可以实现你自己的类:
function Data()
{
this.scores = [];
this.total = 0;
this.addScore = function(subject ,marks) {
var score = { "subject" : subject ,"marks" : marks };
this.scores.push(score);
this.total += marks;
}
this.stringify = function() {
return JSON.stringify(this);
}
}
var data = new Data();
data.addScore("maths",50);
console.log( data.stringify() );
data.addScore("science",75);
console.log( data.stringify() );
输出:{"scores":[{"subject":"maths","marks":50}],"total":50}
{"scores":[{"subject":"maths","marks":50},{"subject":"science","marks":75}],"total":125}
可以使用,object本身或JSON字符串。
一个简单的for循环就足够了。
let data = {
"total": "",
"scores": [{
"subject": "maths",
"marks": "50"
}, {
"subject": "science",
"marks": "75"
}]
};
for (let i in data.scores)
data.total = ((parseInt(data.total) || 0) + parseInt(data.scores[i].marks)).toString();
console.log(data)
以下是ES 2015解决方案:
var result = 0;
for (let score of data.scores){
result += parseInt(score.marks);
}
data.total = result;
同样可以用旧的JavaScript
实现result = 0;
for(var i = 0; i < data.scores.length; i++) {
result += parseInt(data.scores[i].marks);
}
data.total = result;
您应该能够将这些代码片段放入您的代码中。只要记住不要使用for .. in
,因为https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/for_each...in
希望我能帮上忙
Edit:似乎有一个关于…因为它没有被声明为已弃用。不好意思
相关文章:
- 如何将(a*b)两个输入文本值相乘,并在javascript中随文本变化动态显示
- 将动态键值对传递给函数
- 关联数组 - 使用图像滑块显示键值
- 动态插入并从数组中检索键值对 - Javascript
- 使用JSON键和值动态创建一个表
- 提交动态选择框值以显示多重多边形
- 选择特定键,然后显示特定值而不重复 ng 重复
- Reactjs @setState具有动态键值
- 将动态键值添加到 JSON 对象
- 在动态 JavaScript 对象(键/值对)中创建动态数组
- 创建 AJAX 调用以显示任何简单的键/值 JSON
- 在嵌套的 json javascript 中显示数组的所有键值对
- 有没有一种方法可以在express.js中的url路由中执行动态键/值参数
- node.js:添加到Object的键值对,但在打印Object时不显示
- 基于动态数据获取对象键值
- Jquery-从动态表单提交中创建键值对
- Jquery弹出值动态显示复选框
- 迭代键/值并显示它
- 如何添加两个键值,并在json中动态显示另一个键值使用javascript
- GPT -非键值广告显示在键值广告槽