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

Nhóm giá trị trong mảng theo hai thuộc tính JavaScript

Có mảng đối tượng với value và gap. Viết hàm nhóm các đối tượng liên tiếp mà value của đối tượng hiện tại bằng value + gap của đối tượng trước.

Ví dụ: đối tượng value 12, gap 1 → đối tượng tiếp theo value 13 → cùng nhóm, tiếp tục với 14, 15.

Sử dụng reduce():

Ví dụ

const arr = [  { value: 12, gap: 1 },  { value: 13, gap: 1 },  { value: 14, gap: 1 },  { value: 15, gap: 1 },  { value: 19, gap: 2 },  { value: 21, gap: 1 },  { value: 22, gap: 1 },  { value: 23, gap: 1 },  { value: 27, gap: 1 },  { value: 31, gap: 4 },  { value: 35, gap: 4 },  { value: 39, gap: 4 },  { value: 43, gap: 1 },  { value: 50, gap: 1 },  { value: 51, gap: 1 },  { value: 52, gap: 1 },  { value: 55, gap: 1 },  { value: 57, gap: 1 },];const groupArray = arr => {  return arr.reduce((acc, val, ind, array) => {    const { data, currentIndex } = acc;    const { value, gap } = val;    const v = arr[ind - 1]?.value;    const g = arr[ind - 1]?.gap;    if (ind === 0 || value !== v + g) {      const index = data.push([val]) - 1;      return { data, currentIndex: index };    }    data[currentIndex].push(val);    return { data, currentIndex };  }, { data: [], currentIndex: 0 }).data;};console.log(groupArray(arr));

Kết quả

Đầu ra trong console sẽ là:

[  [    { value: 12, gap: 1 },    { value: 13, gap: 1 },    { value: 14, gap: 1 },    { value: 15, gap: 1 }  ],  [    { value: 19, gap: 2 },    { value: 21, gap: 1 },    { value: 22, gap: 1 },    { value: 23, gap: 1 }  ],  [ { value: 27, gap: 1 } ],  [    { value: 31, gap: 4 },    { value: 35, gap: 4 },    { value: 39, gap: 4 },    { value: 43, gap: 1 }  ],  [    { value: 50, gap: 1 },    { value: 51, gap: 1 },    { value: 52, gap: 1 }  ],  [ { value: 55, gap: 1 } ],  [ { value: 57, gap: 1 } ] ]