这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战
说明:文章部分内容及图片出自网络,如有侵权请与我本人联系(主页有公众号:小攻城狮学前端)
作者:小只前端攻城狮、 主页:小只前端攻城狮的主页、 来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
前言
接上一篇文章,我们来详细解读js数组的内容,本篇幅讲述“数组的遍历(1)”,上一篇传送门
map()方法
作用
:对数组中的每一项进行加工。返回一个加工后的新数组。对数组中每一项运行回调函数,返回该函数的结果,组成的新数组(返回的是 加工之后
的新数组)。不会改变原数组
。
arr.map(function (item, index, arr) {
return newItem;
});
举例 1:(拷贝的过程中改变数组元素的值)
有一个已知的数组 arr1,我要求让 arr1 中的每个元素的值都加 10,这里就可以用到 map 方法。
var arr1 = [1, 3, 6, 2, 5, 6];
var arr2 = arr1.map(function (item, index) {
return item + 10; //让arr1中的每个元素加10
});
console.log(arr2);
打印结果:
举例 2:【重要案例,实际开发中经常用到】
将 A 数组中某个属性的值,存储到 B 数组中。代码举例:
const arr1 = [
{ name: '小只前端攻城狮', age: '18' },
{ name: 'PJ想做前端攻城狮', age: '20' },
];
// 将数组 arr1 中的 name 属性,存储到 数组 arr2 中
const arr2 = arr1.map((item) => item.name);
// 将数组 arr1 中的 name、age这两个属性,改一下“键”的名字,存储到 arr3中
const arr3 = arr1.map((item) => ({
myName: item.name,
myAge: item.age,
})); // 将数组 arr1 中的 name 属性,存储到 数组 arr2 中
console.log('arr1:' + JSON.stringify(arr1));
console.log('arr2:' + JSON.stringify(arr2));
console.log('arr3:' + JSON.stringify(arr3));
map 的主要应用场景
:就是对原数组的数据做一个加工后的拷贝
思考:map() 方法真的不会改变原数组吗?
答案:不一定,同上面对forEach那里的分析,item是一个浅拷贝。同时map的回调也是有三个参数,非要想改变原数组也是可以实现的。
filter()
作用:对数组进行过滤。
arr.filter(function (item, index, arr) {
return true;
});
解释:对数组中的每一项运行回调函数,返回筛选通过的元素组成的新数组,不会改变原数组。
示例:找出数组 arr1 中大于 4 的元素,返回一个新的数组。
let arr1 = [1, 3, 6, 2, 5, 6];
let arr2 = arr.filter(item => item > 4);
console.log(JSON.stringify(arr1)); // 打印结果:[1,3,6,2,5,6]
console.log(JSON.stringify(arr2)); // 打印结果:[6,5,6]
感谢阅读,希望能对你有所帮助,文章若有错误或者侵权,可以在评论区留言或在我的主页添加公众号联系我。
写作不易,如果觉得不错,可以「点赞」+「评论」 谢谢支持❤