code war 天天一練(3)

今天又接著來繼續做一道有關數組的題:

這里有一個難點是,數字排序里有負數。使用sort進行排序也會報錯。

所以,幾經思考和測試后,我的答案如下:

function highAndLow(numbers){
  var numArr=[],numArr1=[],numArr2=[];
  numbers.split(' ').map(function(n){
      if(n>=0){
          numArr2.push(n);
      }else{
          numArr1.push(n);
      }
  });
  numArr1.sort((a,b)=>b-a);
  numArr2.sort((a,b)=>b-a);
  numArr = numArr2.concat(numArr1);
  numArr.splice(1,numArr.length-2);
  return numArr.join(' ')
}

 

先將正負數分為兩組,再分別進行排序,最后合并數組,取數組的第一位和最后一位即可。

方法有點笨。哈哈哈,我就是那只笨鳥了。

最后去查看別人寫的代碼:

實踐性最強的是

function highAndLow(numbers){
  numbers = numbers.split(' ').map(Number);
  return Math.max.apply(0, numbers) + ' ' + Math.min.apply(0, numbers);
}

 

直接運用了Math的max和min方法(我怎么就沒想到呢?豬腦袋,555...)

還有一個和我最初想法最接近的:

function highAndLow(numbers){
  var arr = numbers.split(' ').sort(function(a, b) { return a - b });
  return arr[arr.length -1] + ' ' + arr[0];
}

 

只是當時我寫成了

function highAndLow(numbers){
  numbers.split(' ').sort((a, b)=> a - b });
  numbers.splice(1,numbers.length-2);
  return numbers.join(' ');
}

 

因為沒把numbers轉換成數組,導致錯誤(低級錯誤)

 來源:itnose

上一篇: JavaScript DOM 4 - 屬性 attribute vs property

下一篇: 使用js算總價的問題

分享到: 更多
江西新时时开奖结果 北京pk拾赛车软件 幸运飞艇计划软件网址 加拿大pc预测 二八杠推筒子安卓游戏 老时时开奖统计 骰宝4中3玩法 幸运飞航计划软件下载 手机app制作软件 pk10赛车5码34567技巧 欲钱买动物。猜一生肖 破解重庆时时彩 机选双色球号码 后二组选包胆 计划 网上重庆时时彩怎么样? 飞艇赛车pk10直播