Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Gộp phần tử duy nhất của mảng mảng khi cộng giá trị - JavaScript

Cho mảng các mảng con, mỗi mảng con có 2 phần tử: tên (chuỗi) và số nguyên. Gộp các mảng con có tên trùng nhau, giá trị số là tổng các giá trị tương ứng.

Mảng ví dụ:

const example = [[ 'first', 12 ], [ 'second', 19 ], [ 'first', 7 ]];

Kết quả mong đợi:

const example = [[ 'first', 19 ], [ 'second', 19 ] ];

Hàm combineArray():

Ví dụ

const people = [ [ 'Ram', 21], [ 'Mohan', 33], [ 'Vikram', 25], [ 'Mike', 29], [ 'Mohan', 41], [ 'Vikram', 26] ]; const combineArray = (people) => {    const map = {};    for(const index in people){       const name = people[index][0];       const prop = people[index][1];       if(map[name]){          map[name] += prop;       }else{          map[name] = prop;       }    }    return Object.keys(map).map(key => [key, map[key]]); } console.log(combineArray(people));

Kết quả

Đầu ra console:

[ [ 'Ram', 21 ], [ 'Mohan', 74 ], [ 'Vikram', 51 ], [ 'Mike', 29 ] ]

Hàm duyệt mảng, dùng object map tên→giá trị, cộng dồn nếu trùng, cuối chuyển object thành mảng mảng.

Độ phức tạp thời gian O(2n) ≈ O(n), không gian O(n).