关于javascript:JS-教练我想做习题5

40次阅读

共计 3054 个字符,预计需要花费 8 分钟才能阅读完成。

???? 前言

大家好呀,我是毛小悠,能够叫我二毛,在家中排行老二,是一名前端开发工程师。

本系列文章旨在通过练习来进步 JavaScript 的能力,一起欢快的做题吧。????????????

以下每道题,二毛我都有尝试做一遍。倡议限时训练,比方限定为半小时,如果半小时内想不进去,能够联合文章开端的参考答案来思考。

能够在下方评论区留言或者加我的微信:code_maomao。期待你的到来。

求关注求点赞 ????~~~????????????

???? 题目 1:归零

编写一个采纳数组并将所有零挪动到开端的算法,同时保留其余元素的程序。

moveZeros([false,1,0,1,2,0,1,3,”a”]) // returns[false,1,1,2,1,3,”a”,0,0]

习题代码

var moveZeros = function (arr) {}

???? 题目 2:素数

给定负数 n > 1,找到 n 的素因合成。后果将是具备以下模式的字符串:

 "(p1**n1)(p2**n2)...(pk**nk)"

a ** b 意味着 a 的 b 次方。

2*3=2*2*2;

其中 p(i)递增,如果 n(i)为 1,则 n(i)为空。

Example: n = 86240 should return "(2**5)(5)(7**2)(11)"

习题代码

function primeFactors(n){}

???? 题目 3:计算方差

编写一个函数,该函数将承受一个数字序列并计算该序列的方差。

通过从每个值中减去平均值,对后果进行平方,将所有后果相加并除以元素数量,能够得出一组数字的方差。

例如,应用伪代码来计算的方差 [1, 2, 2, 3]。

mean = (1 + 2 + 2 + 3) / 4
=> 2

variance = ((1 - 2)^2 + (2 - 2)^2 + (2-2)^2 + (3 - 2)^2)  /  4
=> 0.5

应用 Javascript 的 toFixed 办法将后果四舍五入到小数点后四位时,将测试后果。

习题代码:

var variance = function(numbers) {};

???? 题目 4:查找奇数 int

给定一个整数数组,找到呈现奇数次的整数。

始终只有一个整数呈现奇数次。

习题代码

function findOdd(A) {
  //happy coding!
  return 0;
}

答案

???? 题目 1 的答案

参考答案 1:

var moveZeros = function (arr) {return arr.filter(function(x) {return x !== 0}).concat(arr.filter(function(x) {return x === 0;}));
}

参考答案 2:

var moveZeros = function (arr) {let result = arr.filter(c => c !== 0)
  let count = arr.length - result.length
  
  return result.concat(Array(count).fill(0))
}

参考答案 3:

var moveZeros = function (arr) {
  return arr
    .filter((val) => val !== 0)
    .concat(arr.filter((val) => val === 0));
}

???? 题目 2 的答案

参考答案 1:

function primeFactors(n){for (var i=2, res="", f; i <= n; i++) {
    f=0;
    while (n%i == 0) {f++; n/=i}
    res += f ? "(" + ( f>1 ? i+"**"+f  : i) +")" : ""
  }
  return res || "("+n+")"
}

参考答案 2:

function primeFactors(n){for(var s = '', d = 2;n>1;d++) {for (var k = 0;n%d == 0;k++, n/=d);
        s += k ? (k==1 ? `(${d})` : `(${d}**${k})`) : '';
    }
return s
}

参考答案 3:

const primeFactors = n => {if (n < 2) return `(${n})`;
  let factors = '';
  for (let i = 2; i <= n; i++) {
    let count = 0;
    while (n%i === 0) {
      count++; 
      n /= i;
    }
    if (count) {factors += `(${i}`;
      if (count > 1) factors += `**${count}`;
      factors += `)`;
    }
  }
  return factors;
}

???? 题目 3 的答案

参考答案 1:

var variance = function(numbers) {var mean = numbers.reduce(function (prev, v) {return prev + v}) / numbers.length
  return numbers.reduce(function (prev, v) {return prev + Math.pow(v - mean, 2) }, 0) / numbers.length
};

参考答案 2:


var variance = function(numbers) {
  var countNumbers = numbers.length;

  var mean = 0.0;
  var i = countNumbers;
  while (i--)
  {mean += numbers[i]
  }
  mean /= countNumbers;
  
  var variance = 0.0;
  i = countNumbers;
  while (i--)
  {variance += Math.pow(numbers[i] - mean, 2);
  }
  variance /= countNumbers;

  return variance;
};

参考答案 3:

const variance = ns => {const mean = ns.reduce((s, n) => s + n) / ns.length;
  return ns.reduce((v, n) => v + (n - mean) ** 2, 0) / ns.length;
}

参考答案 4:

var variance = function(numbers) {const mean = numbers.reduce((sum, i) => sum + i) / numbers.length;
  return numbers.reduce((sum, i) => sum + (i - mean)**2, 0) / numbers.length;
};

???? 题目 4 的答案

参考答案 1:

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

参考答案 2:

function findOdd(A) {var obj = {};
  A.forEach(function(el){obj[el] ? obj[el]++ : obj[el] = 1;
  });
  
  for(prop in obj) {if(obj[prop] % 2 !== 0) return Number(prop);
  }
}

参考答案 3:

function findOdd(A) {return A.reduce(function(c,v){return c^v;},0);
}

参考答案 4:

function findOdd(arr) {
  var result, num = 0;

  arr = arr.sort();
  for (var i = 0; i < arr.length; i++) {if (arr[i] === arr[i+1]) {num++;} else {
      num++;
      if (num % 2 != 0) {result = arr[i];
        break;
      }
    }
  }
  return result;
}

???? 后序

本系列会定期更新的,题目会由浅到深的逐步提高。

求关注求点赞 ????~~????????????

能够关注我的公众号: 前端毛小悠 。欢送浏览

正文完
 0