我从数据库中获取json对象。计算ClassDef
值A , B , C
数量的最佳做法是什么
在json对象中,例如:我在这个json" 2 A和2 B和3 c"
我的json对象:
[{
"ItemCode": "200500303800356",
"LastCost": 8,
"OnHand": 593889,
"InventoryValue": 4751112,
"PercOfTotalInventory": 18.294517,
"CumerativePercTotal": 18.29,
"ClassDef": "A"
}, {
"ItemCode": "201600701800197",
"LastCost": 400,
"OnHand": 300,
"InventoryValue": 120000,
"PercOfTotalInventory": 0.462069,
"CumerativePercTotal": 75.68,
"ClassDef": "A"
}, {
"ItemCode": "200701507000107",
"LastCost": 75,
"OnHand": 239,
"InventoryValue": 17925,
"PercOfTotalInventory": 0.069022,
"CumerativePercTotal": 91.75,
"ClassDef": "B"
}, {
"ItemCode": "200501303400308",
"LastCost": 3515,
"OnHand": 5,
"InventoryValue": 17575,
"PercOfTotalInventory": 0.067674,
"CumerativePercTotal": 91.81,
"ClassDef": "B"
}, {
"ItemCode": "200200106701035",
"LastCost": 80,
"OnHand": 27,
"InventoryValue": 2160,
"PercOfTotalInventory": 0.008317,
"CumerativePercTotal": 99.28,
"ClassDef": "C"
}, {
"ItemCode": "200200902700248",
"LastCost": 10,
"OnHand": 213,
"InventoryValue": 2130,
"PercOfTotalInventory": 0.008202,
"CumerativePercTotal": 99.29,
"ClassDef": "C"
}, {
"ItemCode": "200601302001093",
"LastCost": 0.3,
"OnHand": 6,
"InventoryValue": 1.8,
"PercOfTotalInventory": 0.000007,
"CumerativePercTotal": 100,
"ClassDef": "C"
}]
有没有人知道如何做到这一点?
答案 0 :(得分:1)
试试这个以查找次数
var arr=[{ItemCode:"200500303800356",LastCost:8,OnHand:593889,InventoryValue:4751112,PercOfTotalInventory:18.294517,CumerativePercTotal:18.29,ClassDef:"A"},{ItemCode:"201600701800197",LastCost:400,OnHand:300,InventoryValue:12e4,PercOfTotalInventory:.462069,CumerativePercTotal:75.68,ClassDef:"A"},{ItemCode:"200701507000107",LastCost:75,OnHand:239,InventoryValue:17925,PercOfTotalInventory:.069022,CumerativePercTotal:91.75,ClassDef:"B"},{ItemCode:"200501303400308",LastCost:3515,OnHand:5,InventoryValue:17575,PercOfTotalInventory:.067674,CumerativePercTotal:91.81,ClassDef:"B"},{ItemCode:"200200106701035",LastCost:80,OnHand:27,InventoryValue:2160,PercOfTotalInventory:.008317,CumerativePercTotal:99.28,ClassDef:"C"},{ItemCode:"200200902700248",LastCost:10,OnHand:213,InventoryValue:2130,PercOfTotalInventory:.008202,CumerativePercTotal:99.29,ClassDef:"C"},{ItemCode:"200601302001093",LastCost:.3,OnHand:6,InventoryValue:1.8,PercOfTotalInventory:7e-6,CumerativePercTotal:100,ClassDef:"C"}];
function countOccurences(name, value) {
var count = 0;
// If name and values are defined
if (name && value) {
// Check either a single value or an array of values
var values = (value instanceof Array ? value : [value])
// For each object in array
arr.forEach(function(v) {
// If values array contains object[name] value
if (v[name] && values.indexOf(v[name]) !== -1) {
// Increment counter
count++;
}
});
}
return count;
}
console.log("ClassDef === 'C' :", countOccurences("ClassDef", "C"));
console.log("ClassDef === 'C' or 'B' :", countOccurences("ClassDef", ["C", "B"]));

答案 1 :(得分:1)
const objArray = [{
"ItemCode": "200500303800356",
"LastCost": 8,
"OnHand": 593889,
"InventoryValue": 4751112,
"PercOfTotalInventory": 18.294517,
"CumerativePercTotal": 18.29,
"ClassDef": "A"
}, ...];
const classDefSet = objArray.reduce((set, obj) => {
set.add(obj.ClassDef); // add value to the set. If it already exists nothing will happen
return set;
}, new Set());
const count = [...classDefSet].length; // convert set to plain array
console.log(count); // 3
答案 2 :(得分:1)
您可以使用对象作为结果,并使用ClassDef
作为密钥。
var data = [{ ItemCode: "200500303800356", LastCost: 8, OnHand: 593889, InventoryValue: 4751112, PercOfTotalInventory: 18.294517, CumerativePercTotal: 18.29, ClassDef: "A" }, { ItemCode: "201600701800197", LastCost: 400, OnHand: 300, InventoryValue: 120000, PercOfTotalInventory: 0.462069, CumerativePercTotal: 75.68, ClassDef: "A" }, { ItemCode: "200701507000107", LastCost: 75, OnHand: 239, InventoryValue: 17925, PercOfTotalInventory: 0.069022, CumerativePercTotal: 91.75, ClassDef: "B" }, { ItemCode: "200501303400308", LastCost: 3515, OnHand: 5, InventoryValue: 17575, PercOfTotalInventory: 0.067674, CumerativePercTotal: 91.81, ClassDef: "B" }, { ItemCode: "200200106701035", LastCost: 80, OnHand: 27, InventoryValue: 2160, PercOfTotalInventory: 0.008317, CumerativePercTotal: 99.28, ClassDef: "C" }, { ItemCode: "200200902700248", LastCost: 10, OnHand: 213, InventoryValue: 2130, PercOfTotalInventory: 0.008202, CumerativePercTotal: 99.29, ClassDef: "C" }, { ItemCode: "200601302001093", LastCost: 0.3, OnHand: 6, InventoryValue: 1.8, PercOfTotalInventory: 0.000007, CumerativePercTotal: 100, ClassDef: "C" }],
result = data.reduce(function (r, o) {
r[o.ClassDef] = (r[o.ClassDef] || 0) + 1;
return r;
}, Object.create(null));
console.log(result);

答案 3 :(得分:1)
另一个reduce
示例:
let arr = [{
"ItemCode": "200500303800356",
"LastCost": 8,
"OnHand": 593889,
"InventoryValue": 4751112,
"PercOfTotalInventory": 18.294517,
"CumerativePercTotal": 18.29,
"ClassDef": "A"
}, {
"ItemCode": "201600701800197",
"LastCost": 400,
"OnHand": 300,
"InventoryValue": 120000,
"PercOfTotalInventory": 0.462069,
"CumerativePercTotal": 75.68,
"ClassDef": "A"
}, {
"ItemCode": "200701507000107",
"LastCost": 75,
"OnHand": 239,
"InventoryValue": 17925,
"PercOfTotalInventory": 0.069022,
"CumerativePercTotal": 91.75,
"ClassDef": "B"
}, {
"ItemCode": "200501303400308",
"LastCost": 3515,
"OnHand": 5,
"InventoryValue": 17575,
"PercOfTotalInventory": 0.067674,
"CumerativePercTotal": 91.81,
"ClassDef": "B"
}, {
"ItemCode": "200200106701035",
"LastCost": 80,
"OnHand": 27,
"InventoryValue": 2160,
"PercOfTotalInventory": 0.008317,
"CumerativePercTotal": 99.28,
"ClassDef": "C"
}, {
"ItemCode": "200200902700248",
"LastCost": 10,
"OnHand": 213,
"InventoryValue": 2130,
"PercOfTotalInventory": 0.008202,
"CumerativePercTotal": 99.29,
"ClassDef": "C"
}, {
"ItemCode": "200601302001093",
"LastCost": 0.3,
"OnHand": 6,
"InventoryValue": 1.8,
"PercOfTotalInventory": 0.000007,
"CumerativePercTotal": 100,
"ClassDef": "C"
}];
let result = arr.reduce((acc, el)=>{
if (el.hasOwnProperty("ClassDef")){
if (!acc.hasOwnProperty(el.ClassDef)){
acc[el.ClassDef] = 0;
}
acc[el.ClassDef]++;
}
return acc;
}, {});
console.log(result);

答案 4 :(得分:0)
这对你有用。您可以计算分配给键的值" ClassDef"如此处所示the count of the duplicate value assigned to the same key in JSON array
答案 5 :(得分:0)
使用示例json对象,试试这个:
var countArr = [];
for(i = 0; i < obj.length; i++)
{
var val = obj[i]["ClassDef"];
if(countArr[val] != null)
{
countArr[val] += 1;
}
else
{
countArr[val] = 1;
}
}
这会让你回头
[A: 2, B: 2, C: 3]