JS中數(shù)組的用法
- filter(callback)過濾
arrary
對象的filter
方法戒祠,是對數(shù)組每個元素都執(zhí)行一次filter中的回調(diào)函數(shù)踪蹬,它的結(jié)果會返回一個新數(shù)組乏德,其中的元素滿足回調(diào)函數(shù)中的條件冤吨,空數(shù)組不會執(zhí)行這個方法呻右,且不會改變原數(shù)組哑子,只有在回調(diào)函數(shù)執(zhí)行前傳入的數(shù)組元素才有效舅列,在回調(diào)函數(shù)開始執(zhí)行后才添加的元素將被忽略奉芦;
用法:
//過濾掉小于 10 的數(shù)組元素:
let filtered = [12, 5, 8, 130, 44].filter((e, index, array) => {
return e >= 10
});
//結(jié)果:[12, 130, 44]
map()和foreach
都是循環(huán)遍歷數(shù)組的方法,性能方面都不如for循環(huán)剧蹂,map方法返回一個新的數(shù)組声功,不會改變原來的數(shù)組,他們都不會對空數(shù)組進行處理宠叼;some(callback)
some方法是尋找某個數(shù)組中特定的值先巴,返回true/false,數(shù)組中的非空元素都會去執(zhí)行回調(diào)函數(shù)中的判斷冒冬,只要有一個元素滿足條件則返回true伸蚯,全部為false才返回false
//判斷數(shù)組中是否包括小于10的數(shù)
let state = [10,5,13,20].some((e, index, array) => {
return e<10
})
//結(jié)果:true
- every(callback)
這個方法主要用于判斷一個數(shù)組中的元素是否都滿足某個條件,因為只有當(dāng)每個元素返回true的時候简烤,方法才會返回true剂邮,若有一個不滿足則返回false;
//判斷元素是否都大于10
let state = [10,11,13,20]. every ((e, index, array) => {
return e>10
})
//結(jié)果:true
let state1 = [10,11,13,20,5]. every ((e, index, array) => {
return e>10
})
//結(jié)果:false
- reduce(callback)横侦、reduceRight(callback)
兩個方法都是對于數(shù)組中的每一個元素按照一定順序挥萌,進行疊加運算,具體的計算方式在回調(diào)函數(shù)中進行:
//1,2,3的累加枉侧,返回值為最后的數(shù)
[1,2,3].reduce((total,num) => {
return total+num
})
//結(jié)果:6
//1,2,3的累乘引瀑,返回值為最后的數(shù)
[1,2,3,4].reduce((total,num) => {
return total * num
})
//結(jié)果:24
reduceRight()方法用法一致,不過順序是從后向前進行計算榨馁;
- pop()
方法會刪掉數(shù)組最后一個元素憨栽,改變原數(shù)組
Let arr = [1,2,3];
arr.pop();
console.log(arr);//[1,2]
- shift()
方法會刪掉數(shù)組中的第一個元素,改變了原數(shù)組
Let arr = [1,2,3];
arr.shift();
console.log(arr);//[2,3]
- unshift()
方法會將元素添加到數(shù)組的開頭
let arr = [1,2,3];
arr. unshift(4,5);
console.log(arr);//[4,5,1,2,3]
- concat()
可以將多個數(shù)組拼成一個數(shù)組
let arr1 = [1, 2, 3]翼虫,
arr2 = [4, 5]
let arr = arr1.concat(arr2)
console.log(arr)//[1, 2, 3, 4, 5]
ES6有關(guān)數(shù)組的更多用法屑柔,請到MDN查找學(xué)習(xí),這里真的是個寶庫
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray