Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 - Fatal编程技术网

查找最大和最小数组Javascript

查找最大和最小数组Javascript,javascript,Javascript,我试图找出比较两个阵列的最佳方法 基本上我想知道最大和最小的数组,以便进一步处理。以下是迄今为止我的代码: merge: function(arrOne, arrTwo) { if(arrOne == null || arrTwo == null) throw new Error(); var bigArr = arrOne.length > arrTwo.length ? arrOne : arrTwo, smallArr = bigArr.length

我试图找出比较两个阵列的最佳方法

基本上我想知道最大和最小的数组,以便进一步处理。以下是迄今为止我的代码:

merge: function(arrOne, arrTwo) {

   if(arrOne == null || arrTwo == null) throw new Error();

    var bigArr = arrOne.length > arrTwo.length ? arrOne : arrTwo,
        smallArr = bigArr.length == arrOne.length ? arrTwo : arrOne;

    console.log(bigArr);
    console.log(smallArr);

}

虽然这是可行的,但我猜必须有一种更简单、更有效的方法来做到这一点。有什么想法吗?

如果数组之间存在未定义的值,则代码将失败。如果您需要处理这种情况,您可能需要尝试一种完全不同的方法

var myArray = new Array();
myArray[100] = true;
console.log(myArray.length); // returns 101

最好的方法是不使用三元数,而是在正常条件下写入

var bigArr, smallArr;
if(arrOne.length > arrTwo.length){
    bigArr = arrOne;
    smallArr = arrTwo;
}else{
    smallArr = arrOne;
    bigArr = arrTwo;
}
可读性强,速度快,显然没有bug

如果确实希望使用三元运算符(例如,避免重复声明和声明后赋值),正确的解决方案可能是重复(或缓存)条件:

var   bigArr = arrOne.length > arrTwo.length ? arrOne.length : arrTwo.length,
    smallArr = arrOne.length > arrTwo.length ? arrTwo.length : arrOne.length;
有些可读,显然没有bug,在声明时赋值

如果要避免
If
和条件重复,仍然可以。但是,代码不可读(主要是因为使用了逗号运算符),因此不应在生产代码中使用。不过,它可能对代码高尔夫仍然有用,我将适当地命名变量。小心处理:

l=(a.length>b.length)?(s=b,a):(s=a,b)

@techfoobar它将使它更具可读性,OTOHI将把你的=='s改为=='s@JanDvorak Ahh。很好。“我甚至没想到。”塞森马莱诺,正如我说的,这是一片混乱。如果有人在我们的代码库中使用它,而
如果可以使用
,我会得到一个巨大的
,然后用棍棒打那个家伙。@Jazzepi注意引用一个不存在的属性不是错误<代码>控制台.log(window.foo)