codewar1

一道题目:Descending Order。要求给出一个数字,把它自身的数位上的数从大到小排序一遍。涉及数字,字符串,数组的转换。

function descendingOrder(n){
  return parseInt(String(n).split('').sort().reverse().join(''))
}

因为转换后数组中元素的类型是字符串,但是单个数字,却也可以直接用sort().而没必要用map遍历再转化为数字.试看如下解法

function descendingOrder(n){
  return +(n + '').split('').sort(function(a,b){ return b - a }).join('');
}

刺激吧,实际上是用了unary plus operator,n+''是转化为字符串,最后又将字符串用+转换为数字。

Find the odd int

给定一个数字数组,找出其中只出现过奇数次的数字。符合要求的数字只有一个。

刚开始的思路是用includes()方法建立一个去重后的数组a。再创建数组b,包含数组a中各个数字在原数组中出现的次数。然后找出b的奇数元素就行。因为a,b长度相同,就可以得到要求的数字。
后来发现返回的数字只有一个。所以代码如下:

function findOdd(arr){
    let uniqueArr = [],
        odd = 0
    for(let i = 0;i

codewar的最佳答案是:

const findOdd = (xs) => xs.reduce((a, b) => a ^ b);

运用XOR异或运算符的小婊子。。

你可能感兴趣的:(codewar1)