JS基礎教程(6)

1、字符串經常使用方法

字符串特色:算法

字符串:字符串是被單引號或雙引號包裹的零到多個字符。是js中基本數據類型。 在字符串中的每一個字符,瀏覽器也都給他們分配了一個索引,第一字符的索引是0,第二字符的索引是1,第三個字符的索引是2...,因此經過 字符串[索引]的方式能夠獲取對應索引位置的字符。 字符串也是有length屬性的,表明字符串中字符的個數;數組

tips: 有長度、有索引是否是能夠用經過for 循環遍歷它?瀏覽器

var str = 'EverestTraining';
複製代碼

字符串經常使用方法bash

I 經過制定索引獲取字符或Unicodedom

1.1 charAt(index) 獲取字符串中索引爲index的字符。ui

var s = str.charAt(3);
console.log(s);
複製代碼

1.2 charCodeAt(index) 獲取字符串中指定索引位置的字符的Unicode編碼值,返回的是一個 0 - 65535的整數編碼

var code = str.charCodeAt(5); // 69

複製代碼

II 複製和截取字符串spa

2.1 substr(n, m); 從n開始截取m個,若不寫m,則截取到末尾。若是n和m都不寫,這截取所有;rest

var s1 = str.substr(1, 2);
var s2 = str.substr(1);
var s3 = str.substr();
console.log(s1, s2, s3);

複製代碼

2.2 substring(n, m); 從索引n開始截取,截取到索引爲m結束(不包含m),若是隻寫n,是從n開始截取到末尾;若是一個都不寫,那就是截取所有;code

var s4 = str.substring(1, 3);
var s5 = str.substring(1);
var s6 = str.substr();
console.log(s4, s5, s6);

複製代碼

III. 轉換大小寫(只能轉英文字母)

3.1 大寫轉成小寫 toLowerCase()

var s7 = 'A'.toLocaleLowerCase();
console.log(s7);
複製代碼

3.2 小寫轉大寫 toUpperCase()

var s8 = 'a'.toUpperCase();
console.log(s8);

複製代碼

IV. 獲取指定字符在字符串中出現的位置

4.1 indexOf() 獲取字符在字符串中首次出現的位置,若是字符串中不包含這個字符,則返回-1

var idx1 = str.indexOf('珠');
console.log(idx1);
複製代碼

4.2 lastIndexOf() 獲取字符在字符串中最後一次出現的位置,若是字符串中不包含這個字符,則返回-1

var idx2 = str.indexOf('E');
console.log(idx2);
複製代碼

V. split() 按照指定的分隔符把字符串拆分紅數組(數組中的join方法這個相反,join是根據指定的分隔符數組項拼接成字符串)

var str2 = 'I am a Front-end Engineer';
var ary = str2.split(' '); // 根據空格把 str2 拆分紅一個數組
console.log(ary);
複製代碼

VI. replace() 字符串替換

var str3 = 'zhufeng培訓';
// 5.1 replace(old, new)
var s9 = str3.replace('zhufeng', '珠峯');
console.log(s9);
複製代碼
5.2 replace(old, function () { return new})
var s10 = str3.replace('nihao', function () {
  return '你好'
});
console.log(s10);
複製代碼

VII. match() 匹配,若是匹配到,就返回一個數組,若是匹配不到就返回null

var str4 = 'abcdefabcggg';
var ary2 = str4.match('abc');
console.log(ary2);

複製代碼

3、Math對象

Math對象,是瀏覽器中內置的專門處理數學計算的對象,Math內置了不少的數學方法。

  1. Math.abs(); 獲取絕對值
var m1 = Math.abs(-12.5);
var m2 = Math.abs(12.5);
console.log(m1, m2);

複製代碼
  1. Math.floor(); 向下取整
var m3 = Math.abs(12.5);
console.log(m3);

複製代碼
  1. Math.ceil(); 向上取整
var m4 = Math.ceil(12.5);
console.log(m4);

複製代碼
  1. Math.round() 四捨五入
var m5 = Math.round(2.3);
var m6 = Math.round(3.7);
// 注意:負數是四捨六入
var m7 = Math.round(-2.4);
var m8 = Math.round(-2.6);
console.log(m5, m6, m7, m8);

複製代碼
  1. Math.random() 生成一個0-1之間的隨機小數
var m9 = Math.random();
console.log(m9);

複製代碼

5.2 生成一個n-m之間的隨機數

var n, m;
var ran = Math.round(Math.random() * (m - n) + n);
複製代碼
  1. Math.sqrt(n) 獲取的n的算術平方根
var m10 = Math.sqrt(9);
console.log(m10); // 3

複製代碼
  1. Math.PI 獲取圓周率
var pi = Math.PI();
console.log(pi);
console.log(pi.toFixed(2)); //給Math.PI() 保留2位小數; toFixed(x)是number的方法,做用:保留x位小數
複製代碼

2、Date類型

  1. js中獲去日期時間
var date = new Date(); // Date是一個類型,咱們經過new操做符獲取Date的實例
console.log(date); // 這個date是標準的時間格式

console.log(typeof date); // date實例是一個對象數據類型的值

複製代碼
  1. Date實例方法 2.1 getFullYear() 獲取4位年份,返回4位年份
var year = date.getFullYear();
console.log(year);

複製代碼

2.2 getMonth() 獲取月份,返回0-11的數字,0表明1月份,11表明12月份

var month = date.getMonth();
console.log(month);

複製代碼

2.3 getDay() 獲取星期幾,返回0-6的數字 0表明週日,6表明週六

var weekday = date.getDay();
console.log(weekday);

複製代碼

2.4 getDate() 獲取今天是幾號 今天幾號就返回幾

var today = date.getDate();
console.log(today);
複製代碼

2.6 getHours() 獲取當前幾點的小時數,返回0-23的數字,表明0點到23點

var hour = date.getHours();
console.log(hour);
複製代碼

2.7 getMinutes() 獲取當前幾點的分鐘數,如今是幾分就返回幾

var min = date.getMinutes();
console.log(min);
複製代碼

2.8 getSeconds() 獲取當前幾點的秒數,是幾秒就返回幾

var sec = date.getSeconds();
console.log(sec);
複製代碼

2.9 getMilliseconds() 獲取當前時間的毫秒數,是幾毫秒就返回幾

var mills = date.getMilliseconds(); 
console.log(mills);
複製代碼

2.10 getTime() 獲取時間戳,時間戳是當前時刻距離1970年1月1日0時0分0秒的毫秒數

var timeStamp = date.getTime();
console.log(timeStamp);

複製代碼

Date 格式化時間

時間字符串轉時間對象:Date的另外一個做用是能夠把時間格式的字符串轉換爲時間對象,轉換成時間格式對象後就能夠調用getFullYear等方法

var str = '2019-10-10 17:34:23';
var date2 = new Date(str);
console.log(date2);
console.log(typeof date2);

複製代碼

2、定時器

js中的定時器分爲兩種:

window.setTimeout() 設置一個時間間隔,等到了這個時間間隔執行一次
window.setInterval() 每隔時間間隔執行一次
複製代碼

I 設置定時器 1.1 setTimeout(function() {時間到了要執行的代碼}, 時間間隔),返回定時器id

var timer1 = setTimeout(function () {
  console.log('2s到了');
}, 2000);
複製代碼

1.2setInterval(function() {時間到了要執行的代碼}, 時間間隔),返回定時器id

var timer2 = setInterval(function () {
  console.log('一個2s中到了');
}, 2000);

複製代碼

II. 清除定時器:中止定時器辦法就是清除定時器

2.1 clearTimeout(定時器id)  清除setTimeout定時器


clearTimeout(timer1);
複製代碼

2.2 clearInterval(定時器id) 清除setInterval定時器

clearInterval(timer2);

3、數組排序算法

4.1 冒泡排序

冒泡排序原理:數組相鄰兩項直接互相比較,若是前一項比後一項大,就交換兩項的位置,不然什麼也不作;這樣比較一輪事後,能夠得出本輪的最大值。

示例:

var ary = [8, 94, 15, 6, 3, 2];
//輪數 i                  每一輪比較次數 j
// 0 [8, 15, 6, 3, 2, 94]  5
// 1 [8, 6, 3, 2, 15, 94]  4
// 2 [6, 3, 2, 8, 15, 94]  3
// 3 [3, 2, 6, 8, 15, 94]  2
// 4 [2, 3, 6, 8, 15, 94]  1

// ?比較輪數: ary.length - 1 輪
// ? 每一輪兩兩比較的次數 ary.length - 1 - i
for (var i = 0; i < ary.length - 1; i++) {

  for (var j = 0; j < ary.length - 1 - i; j++) {
    if (ary[j] > ary[j + 1]) {
      var temp = ary[j];
      ary[j] = ary[j + 1];
      ary[j + 1] = temp;
    }
  }
}

console.log(ary);
複製代碼

4.2 快速排序

快速排序的原理:聲明兩個新數組,分別叫作left(左)和right(右),獲取當前數組的中間相,比中間項小的放在left中,比中間項大的放在right。而後對left和right進行一樣的操做,直到當前數組只有一項或者爲空時,終止這個過程,而後把全部的left和right以及中間相拼接起來。

示例:


var ary = [12,8,88,97,67,56,78,86,85];
// left [12, 8, 56] |67| right [88, 97, 78, 86, 85]
// left [] |8| right [12, 56] |67| left [] |78| right [88, 97, 86, 85]
// left [] |8| left [] |12| right [56] |67|78| left [] |left [85] |86| right [88, 97]
// left [] |8| left [] |12| right [56] |67|78| left [] |left [85] |86| left [] |88| right [97]
// 拼接 [8, 12, 56, 67, 78, 85, 86, 88, 97]


function quickSort(ary) {

  // !!!! 使用遞歸要注意遞歸終止的條件:當前數組ary只要一項或者爲空
  if (ary.length <= 1) {
    return ary;
  }

  // 1. 計算中間相索引
  var middleIndex = Math.floor(ary.length / 2);
  // 2. 獲取中間項
  var middleVal = ary.splice(middleIndex, 1)[0];
  // 3. 聲明left和right
  var left = [];
  var right = [];

  // 4. 循環比較數組項和中間項的大小
  for (var i = 0; i < ary.length; i++) {
    var cur = ary[i];

    // 用當前項和中間項比較,若是大就push到right,left
    if (cur > middleVal) {
      right.push(cur);
    } else {
      left.push(cur);
    }
  }

  return quickSort(left).concat(middleVal, quickSort(right));
}

var sortedAry = quickSort(ary);
console.log(sortedAry);

複製代碼

4.3 插入排序

插入排序原理:

假定第一項是最小值; 從第二項開始,從該項開始和前面的項進行比較 若是前面一項比後一項大,則交換位置

var ary = [5, 4, 3, 2, 1];

function insertSort(ary) {
  for (var i = 1; i < ary.length; i++) {
    for (var j = i; j > 0; j--) {
      if ( ary[j - 1] > ary[j]) {
        var temp = ary[j];
        ary[j] = ary[j - 1];
        ary[j - 1] = temp;
      }
    }
  }
  return ary;
}
console.log(insertSort(ary));

複製代碼
相關文章
相關標籤/搜索