JavaScript學習筆記之數組(三)

JavaScript學習筆記之數組(二)

1.['1','2','3'].map(parseInt) 輸出什麼,爲何?

['1','2','3'].map(parseInt)//[1,NaN,NaN]

// map有三個參數:數組元素,元素索引,數組自己
// parseInt有兩個參數,元素自己以及進制parseInt(string,radix)
`['1','2','3'].map(parseInt);
['1','2','3'].map(function(item,index,array){數組

return parseInt(item,index);

});`
parseInt("1",0); => 1
parseInt("2",1); => NaN
parseInt("3",2); => NaNapp

語法:parseInt(string , radix)dom

參數:radix學習

可選。表示要解析的數字的基數。該值介於 2 ~ 36 之間。
若是該參數小於 2 或者大於 36,則 parseInt() 將返回 NaN。
當參數 radix 的值爲 0或沒有設置該參數時,parseInt() 會根據 string 來判斷數字的基數。若是參數string以 「0x」 或 「0X」 開頭,將以 16 爲基數。若是 string 以 1 ~ 9 的數字開頭,parseInt() 將把它解析爲十進制的整數。

2.對數組 ['2018-03-05', '2013-06-12','2019-03-12','2018-03-05','2014-02-22'] 去重且排序

let arr = [...new Set(['2018-03-05', '2013-06-12','2019-03-12','2018-03-05','2014-02-22'])].sort(function(a,b){
  return a<b ? -1:1; 
})
//["2013-06-12", "2014-02-22", "2018-03-05", "2019-03-12"]

3.數組去重

方法一prototype

var arr = [1, 1, '', '', 'a', 'a', true, true, 'true', 'true', false, false, 'false', 'false']
function uniqueArray(array) {
    var arr1 = []
    for (let i = 1; i < array.length; i++) {
        if (arr1.indexOf(array[i]) === -1) {
            arr1.push(array[i])
        }
    }
    console.log(arr1)// [1, "", "a", true, "true", false, "false"]
    return arr1
}
uniqueArray(arr)

方法二code

var arr={'0':null,'1':null,'2':'','3':'','4':4,'5':4,length:'6'}
function uniqueArray(array) {
    if (Array.isArray(array)) {
        array1=array
    } else if(array.length>0){
        var array1 = Array.prototype.slice.call(array)
    }else{
        console("參數必須是數組或類數組對象")
        return
    }
    var arr1 = []
    for (let i = 1; i < array1.length; i++) {
        if (arr1.indexOf(array1[i]) === -1) {
            arr1.push(array1[i])
        }
    }
   
    console.log(arr1)//[null, "", 4]
    return arr1
}
uniqueArray(arr)

方法三對象

var arr = [1, 1, ' ', ' ', 'a', 'a', undefined, undefined, null, null]
function uniqueArrar(array) {
    if (Array.isArray(array) && array.length >1){
        var temp=[]
        array.forEach(function(value,index){
            if(temp.indexOf(value)===-1){
                temp.push(value)
            }
        })  
    }
    return temp 
}
uniqueArrar(arr)//[1, " ", "a", undefined, null]

3.對數組[1,2,3,4,5,'6',7,'8','a','b','z']實現亂序

let tempArr = [1, 5, '6', 7, '8', 'a', 'b', 'z'].sort(function () {
    return Math.random() > 0.5 ? -1 : 1;
})

4.求 [1, 10, 11, -1, 8, 9]內最大值與最小值

var arr = [1, 10, 11, -1, 8, 9]
function MaxMinPlus(arr) {
    if( Array.isArray(arr)){
        var max=Math.max.apply(null, arr) 
        var min=Math.min.apply(null, arr)
    }
    console.log(max)//11
    console.log(min)//-1
}
MaxMinPlus(arr)

若是是類數組,可使用Array.prototype.slice.call()的方法轉換爲數組排序

5.一個數組中存放了多我的員的信息,每一個人員的信息由 name 和 age 構成, 實現年齡從小到大的排序;

var obj = [
  {age:4,name:'張三'},{age:3,name:'李四'},{age:5,name:'王五'},{age:1,name:'趙二'}
]

var obj1 = obj.sort(function(a,b){
  return a.age - b.age;
})
console.log(obj1)
相關文章
相關標籤/搜索