对获取的json数据进行统一加工
//函数方法================
//模拟数据
let arr = [
{a:1,b:2,c:3},
{a:1,b:2,c:3},
{a:1,b:2,c:3}
]
//定义高阶抽象函数
const map = (arry,fn) =>{
let result = [];
for(let value of arry){
result.push(fn(value))
}
return result;
}
//取出所需数据
let needArr = map(obj,(item)=>{
return {a:item.a,b:item.b}
})
//结果
[ {a: 1, b: 2},{a: 1, b: 2},{a: 1, b: 2}]
//非函数方法===============
//模拟数据
let arr = [
{a:1,b:2,c:3},
{a:1,b:2,c:3},
{a:1,b:2,c:3}
]
needArr = () =>{
let _arr = [];
for(let i =0;i<arr.length;i++){
let {a} = arr[i];
let {b} = arr[i];
let _obj = {a:a,b:b};
arr.push(_obj)
}
return _arr;
}
console.log(needArr());
//结果
[ {a: 1, b: 2},{a: 1, b: 2},{a: 1, b: 2}]
函数式思维就是封装可复用方法,通过for of 循环把数组每一项传出,在以参数形式引入的函数中执行,返回想要的结果,函数方法复用性极高,而且当数据接入时候可修改操作灵活,而非函数方法,直接对数据进行操作,函数复用性降低,而且不方便的是灵活性太差,如果后台传入大量数据,逻辑会变得更加臃肿,很难维护。
一点感悟
把前端这个岗位形容成数据操作工,一点也不含糊,无论从刚开始的jq,Zepto,bootstrap等到后来的Angular,react,vue等新兴框架的一统前端,其实无非是变着法的优化对数据的加工处理,以方便渲染页面操作DOM,不断的优化处理数据的能力而已,所以处理数据快,好,准成了现代前端框架的最基本的要求。在这样的背景下,函数式编程方法变得尤为重要。