计数特定项目的实例 w/Javascript

Count instances of specific item w/Javascript

我正在使用 SPServices 从共享点中提取列表。数据加载正常,但我正在尝试计算使用特定 word/option 的实例数。 数据是这样的:

"Name" : "George" , "Payment" : "CC"
"Name" : "Phillip", "Payment" : "CC"
"Name" : "Frances", "Payment" : "PO"
"Name" : "George",  "Payment" : "PO"
"Name" : "George",  "Payment" : "CC"

我想做的是计算 George 出现 CC 与 PO 的实例数。 我已经尝试了一些东西,唯一有点用的东西 - 虽然它只显示'1'是:

for ( var i = 0; i< entries; i++) {
    if (Name == "George") {
       if (Payment == "PO") {
           ++POs;
       }
       if (Payment == "CC") {
           ++VCCs;
       }
    }
 }

但是 returns: 乔治 1 乔治 1 乔治 1

编辑: 这里的每个请求是显示:

$('myTable").append(
 "<tr>" + "<td>" + Name + "</td>" +
 "<td>" + Pos + "</td>" +
 "<td>" + CCs + "</td>" +
 "</tr>"
 )

您可能需要描述您的数据实际是如何传递和存储在对象中的。您用来存储数据的方法可能是问题的根源。另外我建议你用你实际使用的代码更新你的问题。

以下是对您可能有用的猜测:

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>"
     );
}