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

Tạo một chuỗi từ một mảng trong JavaScript

Giả sử chúng ta có một dãy số được sắp xếp như thế này, nơi chúng ta có thể có các số liên tiếp.

const arr = [1, 2, 3, 5, 7, 8, 9, 11];

Chúng tôi được yêu cầu viết một hàm JavaScript có một mảng như vậy.

Hàm của chúng ta sẽ tạo thành một chuỗi cho mảng này. Dãy phải sao cho đối với tất cả các phần tử liên tiếp của mảng, chúng ta chỉ cần viết số bắt đầu và số kết thúc thay thế các số ở giữa bằng dấu gạch ngang (-) và giữ nguyên tất cả các số khác.

Do đó, đối với mảng trên, đầu ra sẽ giống như -

const output = '1-3,5,7-9,11';

Ví dụ

Mã cho điều này sẽ là -

const arr = [1, 2, 3, 5, 7, 8, 9, 11];
const buildSequence = (arr = []) => {
   let pointer;
   return arr.reduce((acc, val, ind) => {
      if (val + 1 === arr[++ind]) {
         if (pointer == null ) {
            pointer = val;
         };
         return acc;
      };
      if (pointer) {
         acc.push(`${pointer}-${val}`);
         pointer = null;
         return acc;
      }
      acc.push(val);
      return acc;
   }, []).join(',');
}
console.log(buildSequence(arr));

Đầu ra

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

1-3,5,7-9,11