[英]Use Jquery to sum values of a specific key in json from a form value
我有一个构造json对象并将其分配给表单文本元素的脚本,如下所示:
<input id="clientList" type="hidden" value="[{"clientID":"1","clientType":"0","clientPrice":"450.00","tourID":"9","insuranceAvailable":"0"},{"clientID":"2","clientType":"2","clientPrice":"0.00","tourID":"9","insuranceAvailable":"0"}]">
我需要(使用Jquery或JS),总结该字符串中的所有clientPrice键。
我正在尝试的代码是:
var totalRoomPrices = 0;
var travellerPricesToSum = JSON.stringify($('#clientList').serializeArray());
$.each(travellerPricesToSum, function () {
totalRoomPrices += this.clientPrice;
});
console.log(totalRoomPrices);
谁能提供一些有关我做错了什么以及如何解决此问题的见解?
谢谢
您需要解析该
value
因为它是json
的字符串表示形式。JSON.stringify
会将object
转换为string
,此处不是这种情况。 另请注意,"
包裹在里面的字符串"
会破坏字符串,请转义它们,或使用'
里面"
,反之亦然。
因为值是strings
,所以+=
会匹配它们。 要使加法有效(考虑浮动值),请使用parseFloat
将其转换为float
尝试这个:
var totalRoomPrices = 0; var travellerPricesToSum = JSON.parse($('#clientList').val()); $.each(travellerPricesToSum, function() { totalRoomPrices += parseFloat(this.clientPrice); }); alert(totalRoomPrices);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <input id="clientList" type="hidden" value='[{"clientID":"1","clientType":"0","clientPrice":"450.00","tourID":"9","insuranceAvailable":"0"},{"clientID":"2","clientType":"2","clientPrice":"0.00","tourID":"9","insuranceAvailable":"0"}]'>
您不能在value属性中使用相同样式的引号。 您将不得不找到另一种在value属性内的字符串中对结构化数据进行编码的方法,我见过人们在使用| 和:字符作为分隔符,显然您将必须使用str.split()
编写自己的解析器。
编辑:显然,如果按照其他答案混合使用单引号和双引号,则也可以选择保留整个JSON字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.