すべての配列操作の中で、マップとフィルターが最も便利です。これらの2つの方法でできることは、必ず言及してください。
マップ
マップは要素を配列に変換できます。配列が変換される理由については、これがマップの美しさです。タイプは開発者によって決定されます。
たとえば、オブジェクトには数値が含まれていますが、必要なのは数値のみであり、配列には関数が含まれており、Promiseが必要です、、、
マップはこの要件を簡単に満たすことができます。マップもフィルターも元の配列を変更しませんが、配列のコピーを返します。
var arr1 = [{
name: 0 }, {
name: 1 }, {
name: 2 }, {
name: 3 }, {
name: 4 }]
console.log(arr1.map(x => x.name)) //[0, 1, 2, 3, 4]
console.log(arr1.map(c => c.name * 6)) //[0, 6, 12, 18, 24]
配列の各要素は、提供されたメソッドを呼び出すときに、要素自体、要素の添え字、および配列自体の3つのパラメーターを渡します(これは一般的には使用されません)。
const items = ['www', 'com']
const arrls = ['111', '222']
const cart = items.map((x, i) => ({
name: x, index: arrls[i] }))
console.log(cart)
// [{name: "www", index: "111"},{name: "com", index: "222"}]
フィルタ
名前が示すように、フィルターは配列内の不要な要素を削除するために使用されます。マップと同様に、削除された配列を返します。
var arr = [1, 2, 3, 4, 5]
console.log(arr.filter(c => c > 3)) // [ 4 , 5 ]
console.log(arr.filter(c => c == 4)) // [ 4 ]
console.log(arr.filter(c => c < 6 && c > 4)) // [ 5 ]
したがって、マップとフィルターを組み合わせて良好な結果を生成する方法。
var arr = [1, 2, 3, 4, 5]
console.log(arr.filter(c => c > 3).map(x => x*100)) // [ 400 , 500 ]
//可能你会有疑问,为什么不直接在filter里面操作c,我们尝试一下
console.log(arr.filter(c => (c > 3) * 100)) // [ 4 , 5 ]
// *100 并没有生效
//我们还可以在map中调用方法
function C100 (c){
return c * 100
}
var arr = [1, 2, 3, 4, 5]
console.log(arr.filter(c => c > 3).map(C100) ) // [ 400 , 500 ]