Tìm số lần xuất hiện của phần tử trong array sử dụng reduce

Đây là đoạn code người ta giải, nhưng mà em không hiểu ở chỗ a[b] này có nghĩa là gì , mong mọi người giải đáp thắc mắc với ạ!!!

function countOccurrences(arr) {
  return arr.reduce(function(a, b){
    a[b] = a[b] + 1 || 1
    return a;
  }, {});
}
console.log(countOccurrences(['a', 'b', 'c', 'b', 'a']));

reduce nhận vào là một hàm có hai tham số:

  • Tham số a: giá trị tổng hợp đến thời điểm hiện tại
  • Tham số b: phần tử hiện tại trong array
function countOccurrences(arr) {
  return arr.reduce(function(a, b){
    console.log(a, b) // Thêm dòng này vào để thấy giá trị lân lượt của a và b nha bạn
    a[b] = a[b] + 1 || 1
    return a;
  }, {});
}
console.log(countOccurrences(['a', 'b', 'c', 'b', 'a']));
3 Likes

cái đó thì mình hiểu bạn à, ý của mình ở đây là a[b] này nó có nghĩa là gì

Vậy bạn đã in thử ab ra để biết giá trị nó là gì ở các lần chạy chưa?
Hint:

a = {}
b = 'a'
a[b] = 1
console.log(a[b])
3 Likes

mình in ra coi rồi, nó ra những cái số đó nhưng mình k hiểu cái mục đích của a[b] là gì?

Ồ, bạn code js, biết tới reduce, nhưng lại không hiểu js object sao. Lấy ví dụ dễ dễ như sau:

var obj =  {
    'key1': 'value1',
    'key2': 'value2'
}

var k = 'key1'

console.log(obj[k])
3 Likes

Mục đích của a[b] là dùng Object lưu tần xuất xuất hiện của từng phần tử đó :))

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?