B[i]=A[0]A[1]...A[i-1]A[i+1]...A[n-1],拆分一下
left = A[0]A[1]...A[i-1],right = A[i+1]...A[n-1],则B[i] = left * right
具体点可见下图(图取自牛客)
图片说明
蓝色部分为left,红色部分为right。1为边界条件(乘1相当于没乘)

JavaScript代码如下
注意,

  1. 循环里的两条语句,用来控制边界值1,不能颠倒顺序。若交换顺序,会多乘上一个array[i]
    比如B[3] = array[0]array[1]array[2]
    交换则成了B[3] = array[0]array[1]array[2]*array[3]
  2. 第一个for循环是= 。第二个for循环是 *=,用来求最终的B[i]
    function multiply(array)
    {
     let B = [];
     let temp = 1;
     for(let i=0; i < array.length; i++){
         B[i] = temp;
         //求左边的累乘
         temp *= array[i];
     }
     temp = 1;
     for(let j = array.length-1; j >= 0; j--){
         B[j] *= temp;
         //求右边的累乘
         temp *= array[j];
     }
     return B;
    }