计算数组内对象的迭代次数

Count iterations of an object inside an array

我有一个从数据库返回数组的变量。在该数组中,我需要计算特定对象迭代的实例。

我尝试使用 jQuery.each 并记录输出以进行检查,但只是在控制台中获得单独的结果。我没有得到想要的计数。在下面的示例中,我希望看到: 尺寸 2 - 计数 1 尺寸 4 - 计数 2

示例输出

   0: {Email: "example@mai.com", Name: "Bob Smith", ​Number: "555-555-1234", Size: "2"}
    
    1: { Email: "example2@mai.com",  Name: "Jenny Girl", ​Number: "222-333-1234",  Size: "4"}
    
    2: {  Email: "example3@mai.com",   Name: "Johnny on the spot",  ​Number: "111-777-1234",  Size: "4"}

使用 jquery 实现此目标的最佳方法是什么?正在使用 .size?

我尝试过的代码:

​​function xyz() {
jQuery.ajax({
data: {action: 'my_action'},
type: 'post',
url: my_ajax.ajax_url,
dataType: 'JSON',
success: function(data) {
jQuery.each(data, function(key,val){
var n = Object.keys(val.Size).size;
console.log(n);
        });

这给了我一个 'undefined' 控制台日志读数。

您可以将 Size 的值存储为对象的 属性 并计数:

// Just for demo - that's your data response:
const data = [{Size: "2"}, {Size: "4"}, {Size: "4"}, {Size: "99"}]; 

const sizes = data.reduce((ob, item) => {
  if (!ob.hasOwnProperty(item.Size)) ob[item.Size] = 0;
  ++ob[item.Size];
  return ob;
}, {});

console.log(sizes);

var data = [
  {Email: "example@mai.com", Name: "Bob Smith", Number: "555-555-1234", Size: "2"},
  {Email: "example2@mai.com", Name: "Jenny Girl", Number: "222-333-1234",  Size: "4"},
  {Email: "example3@mai.com", Name: "Johnny on the spot", Number: "111-777-1234",  Size: "4"}
];

const sizes = data
    // collect each "Size" value from the data
    .map(e => e.Size)
    // use an object to count each instance
    .reduce((a, n) => ({...a, [n]: (a[n] || 0) + 1 }), {})

// log each object entry to the console
Object.entries(sizes)
    .forEach(([size, count]) => console.log(`size: ${size} count: ${count}`));