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

Tích Descartes phân cách bằng gạch ngang của bất kỳ số lượng mảng nào trong JavaScript


Chúng ta cần viết một hàm JavaScript nhận bất kỳ số lượng mảng nào của các giá trị nguyên thủy. Hàm sẽ tính toán và trả về một mảng tích Descartes của tất cả các phần tử từ các mảng, phân cách chúng bằng dấu gạch ngang ('-').

Ví dụ

Mã thực hiện:

const arr1= [ 'a', 'b', 'c', 'd' ];
const arr2= [ '1', '2', '3' ];
const arr3= [ 'x', 'y' ];
const dotCartesian = (...arrs) => {
  const res = arrs.reduce((acc, val) => {
    let ret = [];
    acc.map(obj => {
      val.map(obj_1 => {
        ret.push(obj + '-' + obj_1)
      });
    });
    return ret;
  });
  return res;
};
console.log(dotCartesian(arr1, arr2, arr3));

Kết quả

Kết quả trong console:

[
  'a-1-x', 'a-1-y', 'a-2-x', 'a-2-y', 'a-3-x', 'a-3-y',
  'b-1-x', 'b-1-y', 'b-2-x', 'b-2-y', 'b-3-x', 'b-3-y',
  'c-1-x', 'c-1-y', 'c-2-x', 'c-2-y', 'c-3-x', 'c-3-y',
  'd-1-x', 'd-1-y', 'd-2-x', 'd-2-y', 'd-3-x', 'd-3-y'
]