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

Thuật toán lấy mảng B từ mảng A đếm ngược từ phần tử cuối JavaScript

Cho mảng nhị phân (Array A):

const arr = [1, 0, 1, 1, 1, 1, 0, 1, 1];

Hàm sumRight() tạo Array B:

const output = [1, 0, 4, 3, 2, 1, 0, 2, 1];

Hiểu hàm

Đếm ngược từ cuối mảng: nếu có 1 liên tiếp, phần tử đầu tiên là 1, thứ 2 là 2, thứ 3 là 3... Nếu gặp 0 thì reset về 0.

Sử dụng Array.prototype.reduceRight():

Ví dụ

const arr = [1, 0, 1, 1, 1, 1, 0, 1, 1];const sumRight = arr => {  return arr.reduceRight((acc, val) => {    const { prev, res } = acc;    if (val === 0) {      return { prev: 0, res: res.concat(0) };    }    return { res: res.concat(val + prev), prev: prev + 1 };  }, { prev: 0, res: [] }).res.reverse();};console.log(sumRight(arr));

Kết quả

Đầu ra trong console sẽ là:

[  1, 0, 4, 3, 2,  1, 0, 2, 1 ]