【第三次作业】 js算法题

1.字符串转换对象

 var url = 'http://www.briup.com/?user=anonymous&id=123&age=45&city=Wenzhou

结果:

{

  url:’ http://www.briup.com’

user: 'anonymous',

  id: 123,

  age:45  

  city: 'wenzhou',

}

var url = 'http://www.briup.com/?user=anonymous&id=123&age=45&city=Wenzhou';
var arr=url.split("?");
var obj=new Object();
var a;
var len=arr[0].length;
obj.url=(arr[0]).slice(0,len-1);  //将http://www.briup.com/中最后面的/截掉
a=arr[1];
var arr2=a.split("&");  //以&为分隔符截取字符串
function sp(ar){  //以=为分隔符截取字符串,变成数组
    return ar.split("=");
}
//分别以=为分隔符截取字符串
obj.user=(sp(arr2[0]))[1];
obj.id=(sp(arr2[1]))[1];
obj.age=(sp(arr2[2]))[1];
obj.city=(sp(arr2[3]))[1];
console.log(obj);

2.输出转换

var template = '我是{{name}},年龄{{age}},性别{{sex}}';

var data = {

  name: '姓名',

  age: 18,

  sex:’男’

}

封装函数render(template, data);//结果:我是姓名,年龄18,性别 男

var template = '我是{{name}},年龄{{age}},性别{{sex}}';
var data = {
    name: '姓名',
    age: 18,
    sex:'男',
}
function print(template,data){
        var str=template.replace("{{name}}",data.name); 
        var str2=str.replace("{{age}}",data.age);
        var str3=str2.replace("{{sex}}",data.sex);
        return str3;
}
console.log(print(template,data));

3.转换驼峰式

var s1 = "get-element-by-id"

封装函数 render(s1);结果:getElementById

var s1 = "get-element-by-id"
function render(s1){
        var ar= s1.split("-");  //以-为分隔符截取字符串
        //将字符串的第一个字母用它的大写字母代替
        function sp(arr){
            return arr.replace(arr.charAt(0),arr.charAt(0).toUpperCase()); 
        }
        //将以-分割字符串所得的数组,除去第一个元素外其他元素第一个字母都大写
        var a1=sp(ar[1]);
        var a2=sp(ar[2]);
        var a3=sp(ar[3]);
        return ((ar[0].concat(a1)).concat(a2)).concat(a3);  //将全部首字母变大写的字符创和第一个元素连接
}
console.log(render(s1));

4.千位分隔符

Var num = 123456789;

封装函数 render(num);结果:123,456,789

Var num = 123456789;
封装函数 render(num);结果:123,456,789
*/
/*从前向后,将每三个字符放在一个数组中的同一个位置,然后将其拼接在一起*/
//将数值变成字符串再变为数组
var num = 23745362930;
var str=String(num);
var ar=new Array();  
//寻找要放逗号的位置,从后向前查找,并将其放在一个数组中
for(var i=str.length-1;i>=0;i--){
    if((str.length-i)%3==0){      //寻找逗号之后的那个字符下标
         ar.push(i);    //从后向前数,第三个数的下标放在另一个数组中,例如本例中的7的下标,4的下标,1的下标
    }
} 
//从后向前遍历(因为存放下标的数组是反向的,这样可以将每三个字符正向输出),每三个字符是这个数组的一个位置的值
var str3=new Array();   
for(var i=ar.length-1;i>=0;i--){      
    str3.push(str.slice(ar[i],ar[i]+3));   //利用寻找到的下标找到由数值转换的字符串对应位置的后三个字符串(包括自身)
}
if(str.length%3==0){    //如果由数值转换过来的字符串长度正好是3的倍数,则直接连接即可
    var arr=str3.join();
    console.log(arr);
    }else{       //否则要将前面留下的字符连接到一起,前面的字符要通过之前的存放下标的数组得到(留下的字符的最后一位的下标是存放字符数组的最后一个元素)
        var ss=str.slice(0,(ar[ar.length-1]));    //slice中第二个参数是要截取的字符的下一个字符的下标,返回的是截取的字符串
        var result=(ss.concat(",")).concat(str3.join());
        console.log(result);
}


5.自定义函数mytrim

封装函数 mytrim(str),去除字符串两边的空格。

var str=" sc23 34354n  "
function myTrim(str){
    var ar=str.split(""); 
    var index1,index2;
    for(var i=0;i<ar.length;i++){   //从前往后,寻找字符串中第一个不是空格的字符下标
        if(ar[i]!=" "){
            index1=i;
            break;       
        }
    }
    for(var i=ar.length-1;i>=0;i--){       //从后往前,寻找字符串中第一个不是空格的字符下标
        if(ar[i]!=" "){
            index2=i;
            break;
        }
    }
    console.log(str.slice(index1,index2+1));
}
myTrim(str);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值