使用/ Javascript计算特定项目的实例

时间:2015-01-27 19:41:28

标签: javascript sharepoint

我正在使用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>"
 )

1 个答案:

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