查找最大和最小的数组Javascript

时间:2013-03-29 18:33:24

标签: javascript

我试图找出比较两个数组的最佳方法。

基本上我想知道进一步处理的最大和最小的数组。这是我到目前为止的代码:

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);

}

虽然这有效,但我猜测必须有一种更简单,更有效的方法。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

最好的方法是不使用三元,并写出正常情况。

var bigArr, smallArr;
if(arrOne.length > arrTwo.length){
    bigArr = arrOne;
    smallArr = arrTwo;
}else{
    smallArr = arrOne;
    bigArr = arrTwo;
}

可读,快速,显然没有错误。

如果确实想要使用三元运算符(例如,为了避免在声明后重复声明赋值),也许正确的解决方案是重复(或缓存) )条件:

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

有点可读,显然没有错误,在声明时分配。

如果您想避免if 条件重复,仍然可以。但是,代码是不可读的(主要是因为使用了逗号运算符),不应在生产代码中使用。但是,对于代码高尔夫来说,它可能仍然有用,我将适当地命名变量。小心轻放:

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

答案 1 :(得分:0)

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

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