SOURCE

var maximumProduct = function(nums) {
        if (nums.length === 3) return nums[0] * nums[1] * nums[2];
        var po = [];
        var ne = [];        
        nums.sort((x, y) => Math.abs(y) - Math.abs(x));
        for (var i = 0; i < nums.length; i++) {
            if (nums[i] >= 0) {
                po.push(nums[i])
            } else {
                ne.push(nums[i])
            }
            if (po.length > 2 && ne.length >= 2)
                break;
        }
        //console.log(po, ne);
        if (po.length > 2 && ne.length >= 2) {
            return Math.max(po[0] * po[1] * po[2], ne[0] * ne[1] * po[0])
        } else {
            if (po.length <= 2 && ne.length >= 2) {
                return po.length > 0 ? ne[0] * ne[1] * po[0] : ne[ne.length - 1] * ne[ne.length - 2] * ne[ne.length - 3]
            } else if (ne.length < 2) {
                return po[0] * po[1] * po[2]
            }
        }

        //return po[0] * po[1] * po[2]
    };
    console.log(maximumProduct([-1, -10, -9, -2, -4, -5]));
    console.log(maximumProduct([1, 10, 9, 2, 4, 5]));
    console.log(maximumProduct([1, 10, 9]));
    console.log(maximumProduct([1, 10, 9, 2, 4, 5]));
    console.log(maximumProduct([-1, 10, 9, 2, 4, 5]));
    console.log(maximumProduct([-1, -10, -9, -2, -4, 5]));
    console.log(maximumProduct([1, 10, -9, -2]));
console 命令行工具 X clear

                    
>
console