//接口数据
var source = {
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 data = [];
for (var i = 0; i < source.rows.length; i++) {
var obj = {};
//遍历metaData的name作为obj的key,对应source的项作为obj的value
for (var j = 0; j < source.metaData.length; j++) {
obj[source.metaData[j].name] = source.rows[i][j];
}
data.push(obj);
}
只要数据规范就没有问题
有用请采纳【本回复右上角绿色按钮】,谢谢~
<script>
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: '' }
]
};
function getNewData(data) {
var newdata = data.rows.map((arr) => {
var o = {};
arr.forEach((v, index) => { o[data.metaData[index].name] = v });
return o;
});
return newdata;
}
console.log(JSON.stringify(getNewData(data)))
</script>
思路很简单,遍历rows,为每一条数据item创建一个对象,利用metaData的值为key当前item的值为value生成新对象
rows.map((item)=>{
let obj = {};
for(let i =0;i<item.length;i++){
obj[metaData[i].name] = item[i]
}
return obj
})
可以稍微有点注释吗?