我正在使用SPServices从sharepoint中提取列表。数据加载正常,但我试图计算使用特定单词/选项的实例数。 数据类似于:
"Name" : "George" , "Payment" : "CC"
"Name" : "Phillip", "Payment" : "CC"
"Name" : "Frances", "Payment" : "PO"
"Name" : "George", "Payment" : "PO"
"Name" : "George", "Payment" : "CC"
我要做的是计算乔治的CC与PO出现的实例数。 我尝试了几件有用的东西 - 尽管它只展示了' 1'是:
for ( var i = 0; i< entries; i++) {
if (Name == "George") {
if (Payment == "PO") {
++POs;
}
if (Payment == "CC") {
++VCCs;
}
}
}
然而,然后返回: 乔治1 乔治1 乔治1
编辑: 每个请求在这里是显示:
$('myTable").append(
"<tr>" + "<td>" + Name + "</td>" +
"<td>" + Pos + "</td>" +
"<td>" + CCs + "</td>" +
"</tr>"
)
答案 0 :(得分:0)
您可能需要描述数据实际传递和存储在对象中的方式。您用来存储数据的方法可能是您遇到问题的根源。另外,我建议您使用实际使用的代码更新您的问题。
以下是对可能对您有用的猜测:
var data = [{"Name" : "George", "Payment" : "CC"},
{"Name" : "Phillip", "Payment" : "CC"},
{"Name" : "Frances", "Payment" : "PO"},
{"Name" : "George", "Payment" : "PO"},
{"Name" : "George", "Payment" : "CC"}];
function countPaymentTypes(data) {
var userData = {};
for (var i = 0; i < data.length; i+=1) {
// get name
var currentName = data[i].Name;
// create user object if one does not exist yet
if(userData[currentName]==undefined) {
userData[currentName] = { POs: 0, CCs: 0 };
}
// add payment type to count variables
if (data[i].Payment === "PO") {
userData[currentName].POs+=1;
}
else if (data[i].Payment === "CC") {
userData[currentName].CCs+=1;
}
}
return userData;
}
var userPaymentCounts = countPaymentTypes(data);
console.log(userPaymentCounts.George.POs); // 1
console.log(userPaymentCounts.George.CCs); // 2
console.log(userPaymentCounts.Frances.POs); // 1
console.log(userPaymentCounts.Frances.CCs); // 0
然后,如果用户计数,您可能会执行以下操作:
for (var userName in userPaymentCounts) {
$('myTable').append(
"<tr>" + "<td>" + userName + "</td>" +
"<td>" + userPaymentCounts[userName].POs + "</td>" +
"<td>" + userPaymentCounts[userName].CCs + "</td>" +
"</tr>"
);
}