【面试系列】之五:关于字符串以及数组的操作

之五:关于字符串以及数组的操作

关于数组的操作

先掌握一些基本的数组操作

concat  // 用于拼接多个数组,接受多个参数
push    // 从数组尾部插入一个数,并返回新的数组长度
pop     // 从数组尾部删除一个数,并返回被删除的数
shift   // 从数组头部删除一个数,并返回被删除的数
unshift // 从数组头部插入一个数,并返回新的数组的长度
sort    // 将数组进行排序,可以传递一个参数,是一个函数,如果不传参默认是数字从小到大,字母从A到B
reverse // 将数组颠倒,没有参数
slice   // 截取并返回一个新的数组,可以传两个参数,截取开始的位置,和截取到的位置
splice  // 可以传入多个参数,没有限制。第一个参数,找到一个参数的位置,第二个参数是删除的个数,剩的参数就是要插入的数
join    // 将一个数组变为一个字符串,有一个参数,可以指定之间的分割字符,如果不传参,默认是一个逗号
toString    // 将一个数组变为一个字符串,用逗号分隔

对字符串的操作

对数组的操作


indexOf // 接受一个参数,在字符串中搜索的内容。返回正序搜索的第一次出现的位置。
lastindexOf // 接受一个参数,和上一个一样。倒叙搜索,返回最后一次出现的位置
charAt  // 接受一个数字,是字符串的第几个字符串的位置,返回搜索位置的那个数
concat  // 连接字符串
slice   // 截取一个字符串,传两个参数,一个开始的位置,和一个结束的位置支持两个参数,返回一个新的字符串
spilt   // 将一个字符串转化为一个数组
substr  // 截取一个字符串,接受两个参数,第一个是截取字符串的开始的位置,以及截取的长度
toLowerCase     // 将大写的英文转化为小写
toUpCase    // 将小写的英文转化的小写

做两个题吧

截取一个url里面get方式的值,并转化为返回一个对象

var url = 'https://www.baidu.com/?sid=20510&dap=ipad&tab=novel&apple=ipad';
var obj = new Object();
url = url.substr(url.indexOf('?')+1);

function getObj() {
    var key = url.slice(0, url.indexOf('='));
    if (url.indexOf('&') === -1) {
        var value = url.slice(url.indexOf('=')+1, -1);
        obj[key] = value;
        return
    } else {
        var value = url.slice(url.indexOf('=')+1, url.indexOf('&'));
        url = url.substr(url.indexOf('&')+1);
        obj[key] = value;
    }
    arguments.callee();
}

getObj();

console.log(obj);

还有一个题,字符串去重

// 数组去重(第一种方法)
var str = 'asjijiiiiiiiiiiqodddddddddd034577777777777777d';
var newArr = [];
var arr = str.slice('');
for (var i=0;i<arr.length;i++) {
   if (i + 1 === arr.length) {
       newArr.push(arr[i]);
       break;
   }
   for (var j = i+1;j<arr.length;j++) {
       if (arr[i] === arr[j]) {
           break;
       }
       if (j === arr.length-1) {
           newArr.push(arr[i]);
       }
   }
}

// 数组去重(第二种方法)
var newArr = [];
var arr = str.split('');
arr.sort();

for (var i=0;i<arr.length;i++) {
   if (i+1 === arr.length) {
       newArr.push(arr[i]);
       break;
   }
   if (arr[i+1] !== arr[i]) {
       newArr.push(arr[i]);
   }
}

这个题的解法至少有六种,大家可以发挥,欢迎大家在评论区po上代码

最后

下一次马上更新正则表达式专题。
对不起,更新晚了,大家一起加油,么么哒!

    原文作者:bradwang
    原文地址: https://segmentfault.com/a/1190000006741045
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞