一、map的基本用法
Array.prototype.map()是JavaScript数组对象的一个原型方法,可以将一个数组映射成其他形式的数组。它接收一个函数作为参数,该函数将作用于原数组的每一个可枚举元素,返回一个新的数组。
以下是一个基本的map用法示例:
const arr1 = [1, 2, 3, 4]; const arr2 = arr1.map((x) => x * 2); console.log(arr2); // [2, 4, 6, 8]
在这个例子中,arr1数组的每个元素都乘以2,返回一个新的arr2数组。
二、将字符串数组转换为数字数组
当我们需要将一个字符串数组转换为数字数组时,可以使用map方法加上一元箭头函数将每个字符串转换为数字:
const strArr = ['1', '2', '3', '4']; const numArr = strArr.map((x) => Number(x)); console.log(numArr); // [1, 2, 3, 4]
在这个例子中,将字符串数组转换为数字数组时,箭头函数的Number将每个字符串转换为相应的数字。
三、将对象数组中的某个属性提取到一个新的数组中
当我们需要将一个对象数组中的某个属性提取到一个新的数组中时,可以使用map方法加上一元箭头函数获取该属性:
const userArr = [ { name: 'Mike', age: 30 }, { name: 'Tom', age: 25 }, { name: 'Jane', age: 35 }, ]; const nameArr = userArr.map((x) => x.name); console.log(nameArr); // ['Mike', 'Tom', 'Jane']
在这个例子中,将userArr数组中每个对象的name属性提取出来放到新的nameArr数组中。
四、使用map实现过滤
当我们需要在数组中进行过滤时,可以结合map和filter方法实现。以下示例将数组中所有大于3的元素过滤掉:
const arr3 = [1, 2, 3, 4, 5]; const arr4 = arr3.map((x) => { if (x > 3) { return null; } else { return x; } }).filter((x) => x !== null); console.log(arr4); // [1, 2, 3]
在这个例子中,map方法结合if语句过滤掉大于3的元素,返回一个包含null元素的数组。filter方法再将null元素过滤掉,得到最终结果。
五、使用map实现数组元素的去重
当我们需要去掉数组中的重复元素时,可以利用map方法实现。以下示例去掉数组中的重复元素:
const arr5 = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]; const arr6 = [...new Set(arr5.map((x) => x))]; console.log(arr6); // [1, 2, 3, 4]
在这个例子中,利用map方法将数组元素映射成可枚举的set对象,再利用展开运算符和Set对象的特性去重。
六、使用map和join方法实现字符连接
当我们需要将数组元素连接成一个字符串时,可以结合map和join方法实现。以下示例将数组元素连接成以逗号分隔的字符串:
const arr7 = ['apple', 'banana', 'orange']; const str1 = arr7.map((x) => x).join(','); console.log(str1); // 'apple,banana,orange'
在这个例子中,利用map方法将数组元素映射为一个新的数组,再利用join方法将新数组中的元素以逗号分隔连接成一个字符串。
七、使用map和reduce方法实现数组元素的求和
当我们需要计算数组元素的和时,可以结合map和reduce方法实现。以下示例对数组元素进行求和:
const arr8 = [1, 2, 3, 4]; const sum = arr8.map((x) => x).reduce((a, b) => a+b); console.log(sum); // 10
在这个例子中,利用map方法将数组元素映射为一个新的数组,再利用reduce方法对新数组元素求和。
八、使用map和reduce方法实现一维数组的转置
当我们需要将一维数组转置为二维数组时,可以结合map和reduce方法实现。以下示例将一维数组[1,2,3,4]转置为二维数组[[1,2],[3,4]]:
const arr9 = [1, 2, 3, 4]; const size = 2; const transposedArr = arr9.map((x, i) => i % size === 0 ? arr9.slice(i, i + size) : null ) .filter((x) => x != null); console.log(transposedArr); // [[1, 2], [3, 4]]
在这个例子中,利用map方法和slice方法将一维数组映射为二维数组的可枚举元素,再利用filter方法过滤null元素得到最终结果。
九、使用map实现数组元素的排列组合
当我们需要对数组元素进行排列组合时,可以利用map方法实现。以下示例将数组[1,2,3]的所有排列组合列出来:
const arr10 = [1, 2, 3]; const combArr = arr10.map((x) => arr10.map((y) => [x, y])) .reduce((pre, cur) => pre.concat(cur)) .filter((x) => x[0] !== x[1]); console.log(combArr); // [[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]]
在这个例子中,利用map方法和嵌套map方法将数组元素进行组合,再利用reduce方法将组合结果合并为一个数组。最后再利用filter方法过滤掉自身重复元素得到最终结果。
十、使用map实现二维数组的转置
当我们需要将二维数组转置时,可以利用map方法实现。以下示例将二维数组[ [1,2], [3,4] ]转置为[ [1,3], [2,4] ]:
const arr11 = [[1,2], [3,4]]; const transposedArr2 = arr11[0].map((x, i) => arr11.map((y) => y[i])); console.log(transposedArr2); // [[1, 3], [2, 4]]
在这个例子中,利用map方法和嵌套map方法将二维数组进行转置。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/275842.html