JS 數字 - JS數組迭代

JavaScript 數值始終是 64 位的浮點數

  • 整數(不使用指數或科學計數法)會被精確到 15 位

  • 小數的最大數是 17 位

    但是浮點的算數並不總是 100% 精準

    利用 var x = (0.2 * 10 + 0.1 * 10) / 10; 解決


數字字符串只有 + 時是級聯,其他時候JS會嘗試將字符串轉換爲數字再進行運算


NaN - 非數值

例如:var x = 100 / "Apple"; 將得到NaN

使用isNaN() 來確定某個值是否是數

NaN 是數,typeof NaN 返回 number

NaN == / === NaN // false

對象之間無法比較


數組方法

  1. toString() 將數組轉換爲數組值(逗號分隔)的字符串

    join() 方法可以規定分隔符

    所有對象都有 toString() 方法,如果需要數組原始值,則輸出時自動轉換爲字符串,可以不使用 toString()

  2. pop()push()

    pop() 刪除數組最後一個元素,返回被彈出的值

    push() 在數組結尾處添加一個新元素,返回新數組長度

  3. shift()unshift()

    shift() 刪除數組首個元素,並將其他元素位置至更低索引,返回被彈出的值

    unshift() 在數組首部添加新元素,並反向位移舊元素,返回新數組長度

  4. 使用 length 屬性向數組追加新元素

    arr[arr.length] = "nice"

  5. delete 運算符

    delete arr[1]

    但是會在數組留下未定義詞 undefined

  6. splice()

    arr.splice(2,2,"nice","well")

    第一個參數定義添加元素的位置,第二個參數定義刪除元素個數

    其餘參數定義需添加的元素,返回一個包含被刪除項的數組

    利用 arr.splice(0,1) 刪除-某個元素,卻不留空洞、空值

  7. concat()

    	var arr1 = [ , ];
    	var arr2 = [ , ];
    	var arr3 = arr1.concat(arr2);
    

    concat() 不改變現有數組,返回新數組,可設置任意數量的數組參數或值

  8. slice()

    arr2 = arr1.slice(1,3) ,1爲開始位置,3爲結束位置,也可以忽略結束參數


數組排序

sort() 方法以字母順序對數組進行排序,不可對數字排序(需結合比值函數)

reverse() 反轉數組元素順序,可以結合 sort() 進行降序排序


比值函數

function(a,b){return a-b}

function(a,b){return b-a} 降序

arr.sort(function(a,b){return a-b})


排列數組

  1. 隨機順序

    arr.sort(function(a,b){return 0.5 - Math.random()})0.5減去一個隨機數(0至1)

  2. 查找最大、最小值

    Math.max.apply(null, arr);
    Math.min.apply(null, arr);
    自制函數

    	function myArrayMax(arr) {
     		var len = arr.length
    		var max = -Infinity;
    		while (len--) {
        		if (arr[len] > max) {
            		max = arr[len];
        		}
    		}
    		return max;
    	}
    
  3. 排序對象數組

    即使對象擁有不同數據類型的屬性,sort() 方法仍可用於對數組進行排序

  • 通過比較函數來對比屬性值

    根據年份對汽車排序: cars.sort(function(a, b){return a.year - b.year});

  • 比較字符串屬性會稍複雜

    	cars.sort(function(a, b){
      		var x = a.type.toLowerCase();		//整體字母小寫
      		var y = b.type.toLowerCase();		//整體字母小寫
      		if (x > y) {return 1;}						//比較如果大於爲正值
      		if (x < y) {return -1;}						//比較如果小於爲負值
      		return 0;
    	});
    

數組迭代 value項目值 index項目索引 array數組本身 total總數

  1. forEach() 方法爲每個數組元素調用一次函數(回調函數)

    	var txt = "";
    	var numbers = [45, 4, 9, 16, 25];
    	numbers.forEach(myFunction);
    	function myFunction(value, index, array) {	//需要什麼參數調用什麼
    		txt = txt + value + "<br>"; 
    	}
    
  2. map() 方法通過對每個數組元素執行函數來創建新數組,不會更改原始數組,不會對沒有值的數組元素執行函數

    	var numbers1 = [45, 4, 9, 16, 25];
    	var numbers2 = numbers1.map(myFunction);
    	function myFunction(value, index, array) {	
    		return value * 2;
    	}
    
  3. filter() 方法創建一個包含通過測試的數組元素的新數組

    		var numbers = [45, 4, 9, 16, 25];
    		var over18 = numbers.filter(myFunction);
    		function myFunction(value, index, array) {
    			return value > 18;
    		}
    
  4. reduce() 方法在每個數組元素上運行函數,以生成(減少它)單個值,在數組中從左到右工作,不會減少原始數組
    reduceRight() 方法在每個數組元素上運行函數,以生成(減少它)單個值,在數組中從右到左工作,不會減少原始數組

    	var numbers1 = [45, 4, 9, 16, 25];
    	var sum = numbers1.reduce(myFunction/*(,begain)接受初始值*/);
    	function myFunction(total, value, index, array) {
    		return total + value;
    	}
    
  5. 測試數組值

    every() 方法檢查 所有數組值是否通過測試

    		var numbers = [45, 4, 9, 16, 25];
    		var allOver18 = numbers.every(myFunction);
    		function myFunction(value, index, array) {
    			return value > 18;
    		}
    

    some() 方法檢查 某些數組值是否通過了測試

    		var numbers = [45, 4, 9, 16, 25];
    		var someOver18 = numbers.some(myFunction);
    		function myFunction(value, index, array) {
    			return value > 18;
    		}
    
  6. 檢索項目

    indexOf()lastIndexOf() 方法在數組中搜索元素值並返回其位置

    array.indexOf(item, start)

    item 必需,要檢索的項目

    start 可選,從哪裏開始搜索,負值將從結尾開始數的給定位置開始,並搜索到結尾(indexOf())或開頭(lastIndexOf()

  7. find() 方法返回通過測試函數的第一個數組元素的

    findIndex() 方法返回通過測試函數的第一個數組元素的索引

    	var numbers = [4, 9, 16, 25, 29];
    	var first = numbers.find(myFunction);
    	function myFunction(value, index, array) {
    		return value > 18;
    	}
    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章