在编程时,我们会用到很多方法,其实这些写法我们也可以自己写出来,封装在函数中,使用时直接调用,也很方便,当然我们写的当然没有官网写的方法好,但至少是符合自己的需求的,下面我们来看看几种常用方法的写法吧;
1.分解质因数:
number为需要分解的数字,返回的是分解的结果
function (number) {
var arr = [];
var numberCopy = number;
while (number!=1) {
for (var i = 2; i < =number; i++) {
if (number % i == 0) {
arr.push(i);
number = number / i;
break;
}
}
}
return console.log(numberCopy + "=" + arr.join("*"));
}
2.判断是否为素数
/**
*
* @param {number} num 输入的某个数
* @param isPrime 判断是否为素数
*/
function isPrime(num){
if(num<2){
return false;
}
for(var j=2;j<num/2;j++){
if(num%j==0){
return false;
}
}
return true;
}
3.随机字符串,常用于写验证码
function(len){
var temp='';
for(var i=65;i<65+26;i++){
temp+=String.fromCharCode(i);
}
for(var i=97;i<97+26;i++){
temp+=String.fromCharCode(i);
}
for(var i=48;i<48+10;i++){
temp+=String.fromCharCode(i);
}
var res='';
for(var j=0;j<len;j++){
var index=this.getrandom(0,temp.length-1);
res+=temp[index];
}
return console.log(res);
},
getrandom:function(max,min){
return Math.floor(Math.random()*(max+1-min)+min);
}
4.找到某个字符串中出现最多的字符,打印字符和它出现的次数
function(str){
var recode={};
var res={};
for(var i=0;i<str.length;i++){
if(recode[str[i]]){
recode[str[i]]++;
}else{
recode[str[i]]=1;
}
}
res.maxcount=0;
for(var key in recode){
if(recode[key]>res.maxcount){
res.member=key;
res.maxcount=recode[key];
}
}
console.log(res);
}
5.去掉数组中的重复项
方法一:
function (arr) {
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] == arr[j + 1]) {
delete arr[j + 1];
}
}
}
return console.log(arr);
}
方法二:
function (arr) {
var newarr=[];
for(var i=0;i<arr.length-1;i++){
if(newarr.indexOf(arr[i])==-1){
newarr.push(arr[i]);
}
}
return console.log(newarr);
}
方法三:
function (arr) {
for(var i=0 , newarr=[] , hash={};i<arr.length;i++){
if(hash[arr[i]]===undefined){
newarr.push(arr[i]);
hash[arr[i]]='123';
}
}
return console.log(newarr);
}
6.为数组排序
这里引用的items是一些具体的方法即需求,我们也可以自己添加一些其他的排序方法,例如升序,降序;
function (arr, items) {
if (!items) {
items = function (a, b) {
if (a > b) {
return1;
} else if (a === b) {
return 0;
} else {
return -1;
}
}
}
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
if (items(arr[j], arr[j + 1]) > 0) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return console.log(arr);
}
// 升序方法
function items1(a, b) {
if (a > b) {
return true;
}
}
// 降序方法
function items2(a, b) {
if (b > a)
return true;
}
7.在数组前面添加数据
Array.prototype.unshift = function (arr) {
for (var y = this.length + arguments.length - 1; y > 0; y--) {
this[y] = this[y - arguments.length];
}
for (var i = 0; i < arguments.length; i++) {
this[i] = arguments[i];
}
return this.length;
}
arr.unshift1(6, 7, 3, 0);
console.log(arr);
8.在数组后面添加
Array.prototype.push1 = function(arr){
// this当前调用push1的数组
// arguments 传递进来的所有参数
for(var i = 0; i < arguments.length; i++){
this[this.length] = arguments[i];
}
return this.length;
}
arr.push1(10);
console.log(arr);
9.计算n的阶层,n可输入
function (a) {
var sum = 1;
for (var i = 1; i <= a; i++) {
sum *= i;
}
return console.log(sum);
}