按键对 jQuery 对象中的值求和
Sum values in jQuery object by key
我使用 jQuery CSV (https://github.com/evanplaice/jquery-csv/).
将一个 csv 文件转换为 jQuery 对象
这是相关代码:
$.ajax({
type: "GET",
url: "/path/myfile.csv",
dataType: "text",
success: function(data) {
// once loaded, parse the file and split out into data objects
// we are using jQuery CSV to do this (https://github.com/evanplaice/jquery-csv/)
var data = $.csv.toObjects(data);
});
我需要在对象中按键求和值。具体来说,我需要按公司添加 bushels_per_day 个值。
对象格式如下:
var data = [
"0":{
beans: "",
bushels_per_day: "145",
latitude: "34.6059253",
longitude: "-86.9833417",
meal: "",
oil: "",
plant_city: "Decatur",
plant_company: "AGP",
plant_state: "AL",
processor_downtime: "",
},
// ... more objects
]
这不起作用:
$.each(data, function(index, value) {
var capacity = value.bushels_per_day;
var company = value.plant_company.replace(/\W+/g, '_').toLowerCase();
var sum = 0;
if (company == 'agp') {
sum += capacity;
console.log(sum);
}
});
它只是returns公司每个带前导零的值:
0145
0120
060
等等
我该怎么做?
您需要使用parseInt()
将字符串转换为数字。否则,
+` 进行字符串连接而不是加法。
此外,您需要在循环外初始化sum
。否则,您的总和每次都会被清零,而您计算的不是总数。
var sum = 0;
$.each(data, function(index, value) {
var capacity = parseInt(value.bushels_per_day, 10);
var company = value.plant_company.replace(/\W+/g, '_').toLowerCase();
if (company == 'agp') {
sum += capacity;
console.log(sum);
}
});
您在 $.each
中使用了局部变量 sum
,每次迭代都会重新分配该值,并且您的变量 bushels_per_day
是 string
类型的,所以 JS 只是将它的值与 sum
值
连接起来
尝试this。它对我有用
我使用 jQuery CSV (https://github.com/evanplaice/jquery-csv/).
将一个 csv 文件转换为 jQuery 对象这是相关代码:
$.ajax({
type: "GET",
url: "/path/myfile.csv",
dataType: "text",
success: function(data) {
// once loaded, parse the file and split out into data objects
// we are using jQuery CSV to do this (https://github.com/evanplaice/jquery-csv/)
var data = $.csv.toObjects(data);
});
我需要在对象中按键求和值。具体来说,我需要按公司添加 bushels_per_day 个值。
对象格式如下:
var data = [
"0":{
beans: "",
bushels_per_day: "145",
latitude: "34.6059253",
longitude: "-86.9833417",
meal: "",
oil: "",
plant_city: "Decatur",
plant_company: "AGP",
plant_state: "AL",
processor_downtime: "",
},
// ... more objects
]
这不起作用:
$.each(data, function(index, value) {
var capacity = value.bushels_per_day;
var company = value.plant_company.replace(/\W+/g, '_').toLowerCase();
var sum = 0;
if (company == 'agp') {
sum += capacity;
console.log(sum);
}
});
它只是returns公司每个带前导零的值:
0145
0120
060
等等
我该怎么做?
您需要使用parseInt()
将字符串转换为数字。否则,
+` 进行字符串连接而不是加法。
此外,您需要在循环外初始化sum
。否则,您的总和每次都会被清零,而您计算的不是总数。
var sum = 0;
$.each(data, function(index, value) {
var capacity = parseInt(value.bushels_per_day, 10);
var company = value.plant_company.replace(/\W+/g, '_').toLowerCase();
if (company == 'agp') {
sum += capacity;
console.log(sum);
}
});
您在 $.each
中使用了局部变量 sum
,每次迭代都会重新分配该值,并且您的变量 bushels_per_day
是 string
类型的,所以 JS 只是将它的值与 sum
值
尝试this。它对我有用