为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript - 将对象转换为数组对象

Javascript - 将对象转换为数组对象

慕码人8056858 2023-05-25 18:10:20
尝试将以下对象(从 API 响应中获取)转换为数组对象。const oldObj = {    Georgia : {        notes: "lorem ipsum",        lat: "32.1656",        long: "82.9001"    },    Alabama : {        notes: "lorem ipsum",        lat: "32.3182",        long: "86.9023"    }}我的预期如下:const desireArray = [    {        name: "Georgia",        notes: "lorem ipsum",        lat: "32.1656",        long: "82.9001"    },    {        name: "Alabama",        notes: "lorem ipsum",        lat: "32.3182",        long: "86.9023"    }];尝试使用 forEach,但我认为这不是方法,似乎返回了错误。oldObj.forEach((el, i) => {    console.log(el);});类型错误:oldObj.forEach 不是函数有什么帮助吗?
查看完整描述

4 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

forEach是数组的方法,同时你oldObj是对象


首先你必须将它转换为数组,这里我们可以做的是将对象转换为键值对数组


使用 withmap可以使代码更短


const oldObj = {

  Georgia: {

    notes: "lorem ipsum",

    lat: "32.1656",

    long: "82.9001",

  },

  Alabama: {

    notes: "lorem ipsum",

    lat: "32.3182",

    long: "86.9023",

  },

}


const res = Object.entries(oldObj).map(([name, obj]) => ({ name, ...obj }))


console.log(res)


查看完整回答
反对 回复 2023-05-25
?
湖上湖

TA贡献2003条经验 获得超2个赞

const oldObj = {

    Georgia : {

        notes: "lorem ipsum",

        lat: "32.1656",

        long: "82.9001"

    },

    Alabama : {

        notes: "lorem ipsum",

        lat: "32.3182",

        long: "86.9023"

    }

}


const desireArray = Object.keys(oldObj).map((key) => ({ name: key, ...oldObj[key] }));

解释一下


const keys = Object.keys(oldObj);

const desireArray = keys.map((key) => {

    return {

        name: key,

        notes: oldObj[key].notes,

        lat: oldObj[key].lat,

        long: oldObj[key].long

    }

});


查看完整回答
反对 回复 2023-05-25
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

  1. 使用查找条目Object.entries

  2. destructuring通过将键添加到累加器来减少当前对象

  3. 推入结果数组

const oldObj = {

    Georgia : {

        notes: "lorem ipsum",

        lat: "32.1656",

        long: "82.9001"

    },

    Alabama : {

        notes: "lorem ipsum",

        lat: "32.3182",

        long: "86.9023"

    }

};


const result = Object.entries(oldObj).reduce((acc, curr) => {

    const [key, val] = curr;

    

    acc.push({

        name: key,

        ...val

    });

    return acc;

}, []);


console.log(result);


查看完整回答
反对 回复 2023-05-25
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

const oldObj = {

    Georgia : {

        notes: "lorem ipsum",

        lat: "32.1656",

        long: "82.9001"

    },

    Alabama : {

        notes: "lorem ipsum",

        lat: "32.3182",

        long: "86.9023"

    }

};


function convertObjToArr(obj) {

  let result = [];

  for(let key in obj) {

    result.push({name: key, ...obj[key]});

  }

  return result;

}


console.log(convertObjToArr(oldObj));


或尝试其他简单的解决方案


 return Object.keys(obj).map(item => ( {name: item, ...obj[item]} ));


查看完整回答
反对 回复 2023-05-25
  • 4 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信