您的位置:首页 > Web前端 > JavaScript

JavaScript——Array——reduce()方法应用

2016-12-30 15:54 344 查看
问题:

从某数据库接口得到如下值:
{
rows: [
["Lisa", 16, "Female", "2000-12-01"],
["Bob", 22, "Male", "1996-01-21"]
],
metaData: [
{name: "name", note: ''},
{name: "age", note: ''},
{name: "gender", note: ''},
{name: "birthday", note: ''}
]
}
rows是数据,metaData是对数据的说明。现写一个函数,将上面的Object转化为期望的数组:

[
{name: "Lisa", age: 16, gender: "Female", birthday: "2000-12-01"},
{name: "Bob", age: 22, gender: "Male", birthday: "1996-01-21"},
]


解决代码:(应用reduce 方法 (Array) (JavaScript))
var data = {
rows: [
["Lisa", 16, "Female", "2000-12-01"],
["Bob", 22, "Male", "1996-01-21"]
],
metaData: [{
name: "name",
note: ''
}, {
name: "age",
note: ''
}, {
name: "gender",
note: ''
}, {
name: "birthday",
note: ''
}]
}
var prev = [];

var result = data.rows.reduce(function(prev1, cur1) {
prev1.push(data.metaData.reduce(function(prev, cur, index) {
prev[cur.name] = cur1[index];
return prev;
}, {}))
return prev1;
}, []);

console.log(result);
console.log(result[0]);
console.log(result[1]);


Array.reduce(cal)
,reduce方法接受一个cal回调函数,Array中的每一个元素都会执行这个cal函数。cal函数可以接受多个参数,第一个参数是用作初始值来启动积累。第一次调用cal函数会将此值作为参数而非数组值提供。第二个参数就是Array中的每一个元素,第三个参数是元素对应的IndexFlag。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: