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)