Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript统计特定项的实例_Javascript_Sharepoint - Fatal编程技术网

使用Javascript统计特定项的实例

使用Javascript统计特定项的实例,javascript,sharepoint,Javascript,Sharepoint,我正在使用SPServices从sharepoint中提取列表。数据加载很好,但是我试图计算使用特定单词/选项的实例数。 数据类似于: "Name" : "George" , "Payment" : "CC" "Name" : "Phillip", "Payment" : "CC" "Name" : "Frances", "Payment" : "PO" "Name" : "George", "Payment" : "PO" "Name" : "George", "Payment" : "C

我正在使用SPServices从sharepoint中提取列表。数据加载很好,但是我试图计算使用特定单词/选项的实例数。 数据类似于:

"Name" : "George" , "Payment" : "CC"
"Name" : "Phillip", "Payment" : "CC"
"Name" : "Frances", "Payment" : "PO"
"Name" : "George",  "Payment" : "PO"
"Name" : "George",  "Payment" : "CC"
for (var userName in userPaymentCounts) {
    $('myTable').append(
     "<tr>" + "<td>" + userName + "</td>" +
     "<td>" + userPaymentCounts[userName].POs + "</td>" +
     "<td>" + userPaymentCounts[userName].CCs + "</td>" +
     "</tr>"
     );
}
我想做的是计算George的CC vs PO发生的实例数。 我尝试了一些方法唯一有效的方法是——尽管它只显示“1”:

for ( var i = 0; i< entries; i++) {
    if (Name == "George") {
       if (Payment == "PO") {
           ++POs;
       }
       if (Payment == "CC") {
           ++VCCs;
       }
    }
 }
for(变量i=0;i
然而,这返回: 乔治1 乔治1 乔治1

编辑: 根据请求,此处显示:

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

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

以下是一个可能对你有用的猜测:

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
var data=[{“Name”:“George”,“Payment”:“CC”},
{“姓名”:“菲利普”,“付款”:“抄送”},
{“姓名”:“法郎”,“付款”:“PO”},
{“姓名”:“乔治”,“付款”:“PO”},
{“姓名”:“乔治”,“付款”:“抄送”}];
函数countPaymentTypes(数据){
var userData={};
对于(变量i=0;i
然后根据用户数,您可以执行以下操作:

"Name" : "George" , "Payment" : "CC"
"Name" : "Phillip", "Payment" : "CC"
"Name" : "Frances", "Payment" : "PO"
"Name" : "George",  "Payment" : "PO"
"Name" : "George",  "Payment" : "CC"
for (var userName in userPaymentCounts) {
    $('myTable').append(
     "<tr>" + "<td>" + userName + "</td>" +
     "<td>" + userPaymentCounts[userName].POs + "</td>" +
     "<td>" + userPaymentCounts[userName].CCs + "</td>" +
     "</tr>"
     );
}
for(userPaymentCounts中的var用户名){
$('myTable')。追加(
“”+“”+用户名+“”+
“”+userPaymentCounts[用户名]。POs+“”+
“”+userPaymentCounts[userName]。CCs+“”+
""
);
}

立即,您的循环伪代码看起来不错,但您需要发布您正在运行的实际代码以查看您正在执行的操作。此外,您的伪代码正在检查付款类型“VCC”,而您的数据值是“CC”“。正在使用的代码正在从sharepoint中提取数据。因为我可以很好地提取和显示数据,所以我把它忘了,现在它显示一行又一行的数据——每一行告诉我一个人,以及是抄送还是采购订单。我想计算并返回PO与CC的数量。您建议的上述方法比我的方法更有效。我只返回了未定义的内容。但是,您返回的是计数的数量,而不是实例。我不认为你的最终目标是明确的。我已经更新了代码,以符合我对您的需求的理解。这或多或少是可行的,我不得不改变一些事情,但它工作得很好,谢谢