Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การนับตามคีย์ที่ไม่ซ้ำกันใน JavaScript


ภาพรวม

สมมติว่าเรามีอาร์เรย์ของอ็อบเจ็กต์ดังนี้:

const arr = [
  {
    assigned_user: {
      name: 'Paul',
      id: 34158
    },
    doc_status: "processed"
  },
  {
    assigned_user: {
      name: 'Simon',
      id: 48569
    },
    doc_status: "processed"
  },
  {
    assigned_user: {
      name: 'Simon',
      id: 48569
    },
    doc_status: "processed"
  }
];

เราต้องเขียนฟังก์ชันที่รับอาร์เรย์ดังกล่าว นับจำนวนคุณสมบัติ user ที่ไม่ซ้ำกัน และส่งอ็อบเจ็กต์ที่ไม่ซ้ำกันเหล่านั้นเข้าไปในอาร์เรย์ใหม่แล้วคืนค่า

ตัวอย่างโค้ด

const arr = [
  {
    assigned_user: { name: 'Paul', id: 34158 },
    doc_status: "processed"
  },
  {
    assigned_user: { name: 'Simon', id: 48569 },
    doc_status: "processed"
  },
  {
    assigned_user: { name: 'Simon', id: 48569 },
    doc_status: "processed"
  }
];

const countUnique = (arr = []) => {
  let res = [];
  res = arr.reduce(function (r, o) {
    let user = o.assigned_user.name;
    (r[user]) ? ++r[user] : r[user] = 1;
    return r;
  }, {}),
  result = Object.keys(res).map(function (k) {
    return {user: k, count: res[k]};
  });
  return res;
}

console.log(countUnique(arr));

ผลลัพธ์ในคอนโซล

{ Paul: 1, Simon: 2 }