js合并两个数组为一个对象,一个是简单数组,另一个是多项数组

let arr1=["2018-10-16", "2018-10-17"];

let arr2=[

{
    rate_of_finished_order: "37.54", order_average_amount: 60.53,             
    total_of_orders: 223118, total_of_finished_orders: 83756
},
{
    rate_of_finished_order: "42.47", order_average_amount: 59.82,     
    total_of_orders: 210315, total_of_finished_orders: 89329
}

]
希望得到的对象如下:
{

2018-10-16: {
    rate_of_finished_order: "37.54", order_average_amount: 60.53,             
    total_of_orders: 223118, total_of_finished_orders: 83756
}, 
2018-10-17: {
    rate_of_finished_order: "42.47", order_average_amount: 59.82,     
    total_of_orders: 210315, total_of_finished_orders: 89329
}

}

下面是我的代码,请指教:

getTable(data) {

    let obj = {}
    let tableData = [];
    let arr1 =  Object.keys(data);
    let arr2 = Object.values(data);

    arr2. map(item=>{
       // item.rate_of_finished_order = ((item.total_of_finished_orders/item.total_of_orders)*100).toFixed(2)
        for(let i =0 ;i<arr1.length; i++){
            obj[arr1[i]] = item
        }
        tableData.push(obj)
        //console.dir(obj)
    })
    
    this.setState({
        tableData,
        load: false,
    });
}

最后console出来的结果如下:
{
2018-10-16: "[object Object]"
2018-10-17: "[object Object]"
2018-10-18: "[object Object]"
2018-10-19: "[object Object]"
2018-10-20: "[object Object]"
2018-10-21: "[object Object]"
2018-10-22: "[object Object]"
2018-10-23: "[object Object]"
2018-10-24: "[object Object]"
2018-10-25: "[object Object]"
}
请问为什么都是[object Object]呢???

阅读 4.6k
3 个回答
arr1.reduce((p,c,i)=>{p[c]=arr2[i];return p},{})

更新:没仔细看题目,返回的是Object不是Array,应使用reduce而不是map。楼上回答是对的,我写的是错的...

arr1.map((item, index) => ({[item]: arr2[index]}))

let arr1 = ["2018-10-16", "2018-10-17"];
let arr2 = [
    {
        rate_of_finished_order: "37.54", order_average_amount: 60.53,
        total_of_orders: 223118, total_of_finished_orders: 83756
    },
    {
        rate_of_finished_order: "42.47", order_average_amount: 59.82,
        total_of_orders: 210315, total_of_finished_orders: 89329
    }
];
let res = {};
arr1.forEach((item,index) => {
    res[item] = arr2[index];
});
console.log(res);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题