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); => NaN

語法:parseInt(string , radix)

參數: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.數組去重

要領一

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)

要領二

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)
    原文作者:qfstudy
    原文地址: https://segmentfault.com/a/1190000014694153
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞