如何解题解题思路解析

img

//接口数据
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);
}

只要数据规范就没有问题

有用请采纳【本回复右上角绿色按钮】,谢谢~

img

<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
})

可以稍微有点注释吗?