javascript常见的算法

1、输出今天的日期,以YYYY-MM-DD的方式

var d = new Date();
//获取年,getFullYear()返回4位的数字
var year = d. getFullYear();
//获取月,月份比较特殊,0是1月,11是12月
var month = d. getMonth()+ 1;
//变成两位数
month = month< 10? '0'+ month : month;
//获取日
var day = d. getDate();
day = day< 10? '0' : day;
alert( year + '-'+ month+ '-'+ day)

2、已有字符串foo= 'get-element-byid",写一个function 将其转化成驼峰模式表示法,‘getElementById’

function fn(){
var arr = str. split( '-');
for( var i = 0; i< arr. length; i++){
arr[ i]= arr[ i]. chartAt( 0). toUpperCase()+ arr[ i]. substr( 1, arr[ i]. length- 1)
}
msg = arr. join( '')
return msg
}

3、获取url后面的参数

/*获取url的参数*/
function GetUserId() {
var url = location. search; //获取url中"?"符后的字串
var theRequest = {};
if ( url. indexOf( "?") != - 1) {
var str = url. substr( 1);
strs = str. split( "&");
for ( var i = 0; i < strs. length; i++) {
theRequest[ strs[ i]. split( "=")[ 0]] = strs[ i]. split( "=")[ 1];
}
}
return theRequest;
}

4、立即执行函数

for( var i = 0; i<= 3; i++){
setTimeOut( function(){
console. log( i)
}, 0)
}
//输出结果4444
//改成立即执行函数
for( var i = 0; i<= 3; i++){
setTimeOut(( function(){
console. log( i)
})( i), 0)
}
//输出结果是0 1 2 3

5、判断一个字符串出现最多的次数的字符,统计这个次数

var str = 'askjcdbskbbsbcjkdsb';
var json = {};
for( var i = 0; i< str. length; i++){
if(! json[ str. chartAt( i)]){
json[ str. charAt( i)]= 1;
} else{
json[ str. charAt( i)]++;
}
}
var iMax = 0;
var iIndex = '';
for( var i in json){
if( json[ i]> iMax){
iMax = json[ i];
iIndex = i;
}

}

6、写一个获取非行间样式的函数

   

function getStyle( obj, attr, value){
if(! value){
if( obj. currentStyle){
return obj. currentStyle( attr)
} else{
obj. getComputedStyle( attr, false)
}
} else{
obj. style[ attr]= value;
}
}

7、将数字12345678转化成RMB形式  如:12,345,678

//思路 :先将数字转为字符串, str = str +'';
//利用反转函数,每三个字符加一个 ‘,’;最后一位不加;re()是自定义的反转函数,最后再反转回去
function re( str){
str + = '';
return str. split( ''). reverse(). join( '')
}
function toRMB( num){
var tmp = '';
for( var i = 1; i< re( num). length; i++){
tmp += re( num)[ i- 1]
if( i % 3 == 0 && i!= re( num). length){
tmp += ','
}
}
return re( tmp)
}

8、生成5个不同的随机数

//思路:5个不同的随机数 ,每生成一次就和前面的所有数字进行比较,如果有相同的就放弃当前生成的数字。
var num1 = [];
for( var i = 0; i< 5; i++){
num1[ i] = Math. floor( Math. random()* 10)+ 1;
for( var j = 0; j< i; j++){
if( num1[ i] == num1[ j]){
i--;
}
}
}

9、数组去重

//思路:每遍历一次就和之前的所有做比较,不相等则放入新的数组中
function unique( arr){
var narr = [];
for( var i = 0; i< arr. length; i++){
if( narr. indexOf( arr[ i]==- 1)){
narr. push( arr[ i])
}
}
return narr;
}

10、写一个函数可以计算sum(5,0,-5);输出0;sum(1,2,3,4);输出10

function sum(){
var result = 0;
var arr = arguments;
for( var i = 0; i< arr. length; i++){
var num = arguments[ i]
if( typeof num == 'number'){
result+= num;
}
}
return result;
}

11、定义一个log方法,让它可以代理console.log()的方法。

function log( msg){
consloe. log( msg)
}
//如果要传入多个参数的话
function log(){
console. log. apply( console, arguments)
}
 

12、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值