Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使我的职能更有效?_Javascript_Arrays_Loops_If Statement - Fatal编程技术网

Javascript 如何使我的职能更有效?

Javascript 如何使我的职能更有效?,javascript,arrays,loops,if-statement,Javascript,Arrays,Loops,If Statement,嘿,伙计们,我写了一个比较数组值并返回最小值的函数,但我想知道是否有更有效的方法,比如迭代所有数组(使用一个循环)并将结果放入一个新数组或将单个数组作为单个数组的子数组,等等。该函数还提供正确的输出,但打印三次答案: var nums1 = [-7528819, 3927361, -6398192]; var nums2 = [1777100, -2299720, -5566643]; var nums3 = [7188445, 3724971, 7699332]; var nums4 = [-

嘿,伙计们,我写了一个比较数组值并返回最小值的函数,但我想知道是否有更有效的方法,比如迭代所有数组(使用一个循环)并将结果放入一个新数组或将单个数组作为单个数组的子数组,等等。该函数还提供正确的输出,但打印三次答案:

var nums1 = [-7528819, 3927361, -6398192];
var nums2 = [1777100, -2299720, -5566643];
var nums3 = [7188445, 3724971, 7699332];
var nums4 = [-8432528, -159836, -1604959];
var nums5 = [2764889, 4681472, 701396];
var nums6 = [-5073513, 599535, 4388457];
var nums7 = [8689640, 8028586, 1022322];
var nums8 = [-1088592, 1211232, -7868192];
var nums9 = [-5848613, -4945165, 631213];
var nums10 = [3218429, -833619, -1495854];
var nums11 = [8007060, 1637562, -7568493];
var nums12 = [-8391131, -6585338, 131787];
var nums13 = [-3957775, -9396892, -6143241];
var nums14 = [-6258442, -7829421, 3696922];
var nums15 = [2136598, 4935467, -1621605];
var nums16 = [-7162005, 9861954, 8977930];
var nums17 = [7226452, 8551594, 7006517];
var nums18 = [-1751226, -2536997, -1782251];
var nums19 = [380582, 1614389, 3272584];
var nums20 = [-8988205, -5167181, -7561034];
var nums21 = [-484059, -7160121, 4076528];
var nums22 = [1947448, -5551253, 7491190];

var numsLength = nums1.length;
var i = 0;
var minNum;

function test(arr) {
    for (i; i < numsLength; i++) {
        if (arr[0] < arr[1] && arr[2]) {
            minNum = arr[0];

        } else if (arr[1] < arr[2] && arr[0]) {
            minNum = arr[1];

        } else if (arr[2] < arr[1] && arr[0]) {
            minNum = arr[2];
        }
        console.log(minNum);
    }
}

test(nums1);
var nums1=[-7528819,3927361,-6398192];
var nums2=[1777100,-2299720,-5566643];
var nums3=[718844537249717699332];
var nums4=[-8432528,-159836,-1604959];
var nums5=[2764889,4681472,701396];
var nums6=[-507351355995354388457];
var nums7=[868964080285861022322];
var nums8=[-10885921211232,-7868192];
var nums9=[-5848613,-4945165,631213];
var nums10=[3218429,-833619,-1495854];
var nums11=[80070601637562,-7568493];
var nums12=[-8391131,-6585338131787];
var nums13=[-3957775,-9396892,-6143241];
var nums14=[-6258442,-7829421,3696922];
var nums15=[2136598,4935467,-1621605];
var nums16=[-71620059861954897930];
var nums17=[7226452,8551594,7006517];
var nums18=[-1751226,-2536997,-1782251];
var nums19=[38058216143893272584];
var nums20=[-8988205,-5167181,-7561034];
var nums21=[-484059,-71601214076528];
var nums2=[1947448,-5551253,7491190];
var numsLength=nums1.length;
var i=0;
米努姆变种;
功能测试(arr){
对于(i;i
您可以使用
Math.min
函数

console.log(Math.min.apply(null, nums1));

查看他的代码片段并阅读内联注释:

var nums = [];

// I'm pushing only 3 sets of data, but there can be any number
// Also there can be any number of elements in each array as you can see
nums.push([-7528819, 3927361, -6398192]);
nums.push([1777100, -2299720, -5566643, 380582]);
nums.push([7188445, 3724971, 7699332, 1947448, -5551253, 7491190]);

function produceResults(nums) {
    var i,
        results = [];

    // gathering results
    for (i = 0; i < nums.length; i++) {
        results.push(Math.min.apply(null, nums[i]));
    }

    return results;
}

console.log(produceResults(nums));
var nums=[];
//我只推了3组数据,但可以是任意数量的
//正如您所看到的,每个数组中可以有任意数量的元素
推力([-7528819992737361,-6398192]);
推量([1777100,-2299720,-5566643380582]);
推量([7188445372497176993321947448,-5551253791190]);
功能生产结果(nums){
var i,
结果=[];
//收集结果
对于(i=0;i
So 2建议:

  • 使用更动态的结构(数组的数组)而不是 定义22个数组
  • 使用内置的JS函数和组件()

  • 在大多数情况下,展开循环实际上是循环的最有效实现。然而,实际上,展开循环通常是不可行的。对于一个小的、固定大小的数组,就像这里的数组一样,循环的每一个排列都是显而易见的,如果你的目标是原始速度,那么你就不可能获得比现在更高的效率。也就是说,正如其他人所指出的那样,函数中的循环是无用的,因为实际上已经展开了循环。此外,if语句的语法不正确,并且您没有处理数组中的值相等的情况。对于大小为3的固定数组,您需要更符合以下要求的内容

    if (val1 <= val2 && val1 <= val3) {
        minVal = val1;
    } else if (val2 <= val1 && val2 <= val3) {
        minVal = val2;
    } else minVal = val3;
    

    if(val1如果不使用
    i
    ,为什么会有一个循环?而且因为
    console.log
    在无用的循环中,它会输出结果3次…为了澄清您的问题,您是在问如何通过nums1..nums22循环并获得一个包含每个numsX数组的最小数目的数组?我明白了,循环是无用的。对于DJ),ye这基本上就是我要问的。在你的例子中,数字将如何输入到形成的数组中?@KeithGray我编辑了我的答案-希望现在更干净。你可以将此代码直接粘贴到JS控制台(例如在Chrome Web Dev工具中)以查看输出。
    var minVal = null;
    
    for (var i = 0; i < arr.length; i++) {
        if (minVal === null || minVal > (val = arr[i]))
            minVal = val;
    }