【面試系列】之五:關於字串以及陣列的操作

bradwang發表於2019-02-16

之五:關於字串以及陣列的操作

關於陣列的操作

先掌握一些基本的陣列操作

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上程式碼

最後

下一次馬上更新正規表示式專題。
對不起,更新晚了,大家一起加油,麼麼噠!

相關文章