/**
 * @param {number[]} nums
 * @return {number[]}
 */
const productExceptSelf = (nums) => {
  if (1 === nums.length) return [0];

  let factorList = [], defaultFactor = 1;

  for (let i = 0; i < nums.length; i++) {
    factorList[i] = defaultFactor;
    defaultFactor *= nums[i];
  }

  defaultFactor = 1;

  // [1, 4, 12, 24]
  for (let j = 0; j < nums.length; j++) {
    console.log(factorList[nums.length - (j + 1)]);
    factorList[nums.length - (j + 1)] *= defaultFactor;
    defaultFactor *= nums[nums.length - (j + 1)];
  }

  console.log(factorList)
  //   console.log(Array.from(map, ([key, value]) => Math.abs(value)))
  //
  //   return;
};



// productExceptSelf([1, 2, 3, 4])
// productExceptSelf([1, 2, 3, 4, 2])
// productExceptSelf([-1, 1, 0, -3, 3])
// productExceptSelf([0, 0])
productExceptSelf([0])