function getNum(arr){
    var newArr=[];
    var sum=1;
    for(var i=0;i<arr.length;i++){
        sum=sum*arr[i];
    }
    console.log(sum);
    for(var j=0;j<arr.length;j++){
        var item=sum/arr[j];
        newArr.push(item);
    }
   return newArr;
}

发表于 2020-06-29 15:54:08 回复(5)
function fun1 (arr) {
    var sum = 1, numArr = []
    for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr.length; j++) {
            if (arr[i] == arr[j]) {
                sum *= 1
            } else {
                sum *= arr[j]
            }
        }
        numArr.push(sum)
        sum = 1
    }
    return numArr
}
发表于 2020-09-08 08:46:27 回复(0)
function productExceptSelf(input){
    if(input.lenght==0){
        return []
    }
    let mul=input.reduce((total,n) =>{
        return total*n
    },1)
    return input.map(n => {return mul/n})
}

编辑于 2020-08-02 17:51:51 回复(5)
function productExceptSelf(nums){
  var allRes = 1;
  //获得所有元素的乘积
  nums.forEach(element => {
    allRes *= element;
  });
  //除以自身
  var numsRes = nums.map(element =>{
    return allRes/element;
  });
  return numsRes;
}

// var input = [1,2,3,4];
// productExceptSelf(input);
// var input2 = [2,3,4,5];
// productExceptSelf(input2);


编辑于 2020-10-13 10:20:14 回复(0)

const productExceptSelf = (numbers) => {

let newNumbers = [];

if(Array.isArray(numbers)) {

    let themultiResult = numbers.reduce((a, b) => a * b);

    for(let i = 0; i < numbers.length; i++) {

        newNumbers[i] = themultiResult / numbers[i]

    }    

} else {

    console.error('please intpu correct data type')

}

    return newNumbers;

}

发表于 2023-08-29 18:26:59 回复(0)
function productExceptSelf(input) {
    let output = [];//定义输出数组
    for (let i = 0; i < input.length; i++) {
        //以input[i]为界限,将输入截取为左侧和右侧两数组
        let left = input.slice(0, i);
        let right = input.slice(i + 1, input.length);
        var sum1 = 1, sum2 = 1, sum = 1;//sum需定义在循环里,避免后续sum成绩叠加
        //左侧数组乘积和
        for (let value of left) {
            sum1 *= value;
        }
        //右侧侧数组乘积和
        for (let zhi of right) {
            sum2 *= zhi;
        }
        //取左右两数组乘积
        if (left.length == 0) {
            sum = sum2;
        }
        else if (right.length == 0) {
            sum = sum1;
        } else {
            sum = sum1 * sum2;
        }
        //output[i]对应input[i]处所求得的sum值
        output[i] = sum;
    }
    //返回数组
    return output;
}
//可自行验证
console.log(productExceptSelf([2, 0, 9, 5]));
避免题目盲区:数组中有0存在的情况。

发表于 2022-07-05 15:17:20 回复(0)
        function productExceptSelf(numArray) {
            let tempArray = [];
            numArray.forEach(item1 => {
                let num = 1;
                numArray.forEach(item2 => {
                    if (item1 != item2) {
                        num = num * item2;
                    }
                });
                tempArray.push(num);
            });
            return tempArray;
        }

发表于 2022-05-25 15:25:49 回复(0)
function getfn(array){
    var sum = 1;
    for(let i = 0; i < array.length; i++){
        sum = array[i] * sum
    }
    var output = array;
    for(let i = 0; i < array.length; i++){
        output[i] = sum / array[i];
    }
    return output
}

console.log(getfn([1,2,3,4]));
console.log(getfn([2,3,5]));

发表于 2022-04-22 15:31:39 回复(0)
function productExceptself(Number) {
    let p = 1;
    let zeronumber = 0;
    for (let i = 0; i < Number.length; i++) {
        if (Number[i] === 0) {
            zeronumber++;
            if (zeronumber > 1) return Number.fill(0);
            else continue;
        }
        p = p * Number[i];
    }
    for (let j = 0; j < Number.length; j++) {
        if (zeronumber === 1 && Number[j] !== 0) Number[j] = 0;
        else if (zeronumber === 1 && Number[j] === 0) Number[j] = p;
        else if (zeronumber === 0) Number[j] = p / Number[j];
    }
    return Number;
}
发表于 2022-04-07 14:57:24 回复(0)
  function productExceptSelf(input) { 
    if (!input || !input.length) return 0; 
    let result = 1; 
    // 计算总和 
    input.forEach(item => { 
      result *= item; 
    }); 
    // 两个0,结果就是0; 一个零,返回除0以外的数字累乘 
    function getResult() { 
      let flag = 0; 
      return input.reduce((pre, cur, index, arr) => { 
        if (cur === 0) flag++; 
        if (flag === 2) return 0; // 第二次碰到0,累乘0 
        return cur === 0 ? pre : pre * cur;//如果第一次碰到0,就跳过 
      }, 1)
    } 
    // 处理每一项数据 
    return input.map((item, index, arr) => { 
      return item === 0 ? getResult() : result / item; 
    }); 
  } 
  console.log(productExceptSelf([1, 2, 3, 4, 0]));// [0,0,0,0,24]
  console.log(productExceptSelf([0, 2, 3, 4, 0])); //[0, 0, 0, 0, 0] 
编辑于 2022-03-22 11:47:25 回复(0)
function productExceptSelf(nums) {
  let res = eval(nums.join('*'))
  let output = newArray(nums.leng)
  for (let i in nums) {
    output[i] = res / nums[i]
  }
  return output
}

发表于 2022-03-15 13:28:59 回复(0)

function productExceptSelf(value) {
    let list = JSON.parse(JSON.stringify(value))
    let res = []
    value.forEach((item,index) => {
        let all = 1
        let list = JSON.parse(JSON.stringify(value))
        list.splice(index,1)
        list.forEach(item => all *= item)
        res.push(all)
    })
    
    return res
}
各位大佬的方法,可能不适合数组中含有0的情况,那样会出现/0 结果也会不对

发表于 2021-02-05 15:39:33 回复(0)
function productExceptSelf(input){
	let mul = input.reduce((total,n) => total *n );
	return input.map(n => mul/n);
}

发表于 2020-12-24 17:06:46 回复(0)
function subString(str){
    var arr=str.split(' ')
    for(let i=0;i<arr.length;i++){
        while(arr[i]==="") arr.splice(i, 1)
    }
    arr=arr.reverse().toString().replace(/,/g,' ')
    return arr
}


发表于 2020-09-07 22:20:54 回复(0)
function productExceptSelf(nums) {
	var flag = nums.indexOf(0);
	if (flag != -1) {
		var arr = Array.from({
			length: nums.length
		}, () => 0);
		var sum=1;
		nums.forEach(function(value,key) {
			if (key!=flag) {
				sum *= value;
			}			
		});
		arr[flag] = sum;
		return arr;
	} else {
		let mul = nums.reduce((total, n) => {
			return total * n
		}, 1)
		return nums.map(n => {
			return mul / n
		})
	}
}


发表于 2020-09-06 10:23:08 回复(0)
硬来 
function productExceptSelf(arr) {
     const newArr = []
     if (arr.length > 0) {
        arr.forEach((itidx=> {
           const timsArr = arr.filter((it,index=> idx !== index)
           const result = timsArr.reduce((totalit=> { 
            return total * it
           },1)
           newArr.push(result)
        }) 
     }
    return newArr
 }
发表于 2020-09-01 11:09:32 回复(0)
var productExceptSelf = function(nums) {

    let answers = new Array(nums.length)
    answers[0] = 1
    for(let i = 1; i < answers.length; i++) {
        answers[i] = answers[i - 1] * nums[i - 1]
    }
    let R = 1
    for(let i = answers.length - 1; i >= 0; i--) {
        answers[i] = answers[i] * R
        R = R * nums[i]
    }
    return answers
};
https://leetcode-cn.com/problems/product-of-array-except-self/
发表于 2020-08-23 14:28:39 回复(0)
const productExceptSelf = arr => {
    if (!arr.lengthreturn 0
    const total = arr.reduce((prev, cur) => prev * cur)
    return arr.map(num => total / num)
}
发表于 2020-07-30 12:29:24 回复(0)
function productExceptSelf(nums) {
  const data = [];

  if (nums && nums.length > 1) {
    for (var i = 0; i < nums.length; i++) {
      data[i] = 1;
      for (var t = 0; t < nums.length; t++) {
        if (i !== t) {
          data[i] *= nums[t];
        }
      }
    }
  }
  return data;
}

发表于 2020-07-21 18:33:02 回复(0)
 function productExcepSelf(arr){
           let len = arr.length;
           let newArr = [];
           for(let i=0i<leni++){
            let temp = 1;
               for(let j=0j<lenj++){
                   if(i != j){
                    temp = arr[j] * temp;
                   }
               }
               newArr.push(temp);
           }
           return newArr;
       }
发表于 2020-06-10 15:52:03 回复(0)