您好,欢迎访问一九零五行业门户网

code war的实例教程

今天又接着来继续做一道有关数组的题:
这里有一个难点是,数字排序里有负数。使用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转换成数组,导致错误(低级错误)
以上就是code war的实例教程的详细内容。
其它类似信息

推荐信息