Computer >> Máy Tính >  >> Lập trình >> Javascript

Kết hợp các mục duy nhất của một mảng mảng trong khi tính tổng các giá trị - JavaScript

Chúng ta có một mảng mảng, mỗi mảng con chứa chính xác hai phần tử, đầu tiên là một chuỗi, tên aperson trong trường hợp này và thứ hai là một số nguyên, những gì chúng ta cần làm là kết hợp tất cả các mảng con có phần tử đầu tiên giống nhau và phần tử thứ hai phải là tổng các phần tử thứ hai của các mảng con chung.

Sau đây là mảng ví dụ của chúng tôi -

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

Nên được chuyển đổi thành sau

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

Giả sử chúng ta viết một hàm mergeArray () nhận mảng làm đầu vào và trả về mảng tổ hợp làm đầu ra, mã cho cùng một sẽ là -

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));

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

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

Hiểu về hàm kết hợp -

Nó lặp lại trên mảng, ánh xạ tên dưới dạng khóa và hỗ trợ dưới dạng giá trị trong một đối tượng, làm cho khóa trùng lặp được cộng lại với nhau và cuối cùng đối tượng được chuyển đổi thành một mảng của mảng và quay trở lại.

Độ phức tạp về thời gian của hàm này là O (2n) thường được làm tròn thành O (n) và độ phức tạp của không gian là O (n) nữa.