微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用其属性值作为属性键重新格式化对象?

如何解决如何使用其属性值作为属性键重新格式化对象?

如何将对象属性值指定为属性键?

我有一组数据:

const mydata = [
    {
      "id": 001,"value": "Value 1","title": "Title 1"
    },{
      "id": 002,"value": [
        {
          "Name": "Name 1","Age": "20"
        },{
          "Name": "Name 2","Age": "30"
        },],"title": "Title 2"
    },]

我想将其重新格式化为:

const mydata = [
    {
      "Title 1": "Value 1"
    },{
      "Title 2": [
        {
          "Name": "Name 1",]
    },]

我已经尝试过这段代码来实现它:

mydata.map((dt: any) => {
  dt.title: dt.value
});

但是,它似乎不起作用。

知道如何将其重新格式化为我想要的格式吗?

谢谢。

解决方法

如果要将数组转换为不同类型的变量,请使用 [reduce][1]

const mydata = [
  {
    id: 001,value: "Value 1",title: "Title 1",},{
    id: 002,value: [
      {
        Name: "Name 1",Age: "20",{
        Name: "Name 2",Age: "30",],title: "Title 2",];

const data = mydata.reduce(
  (acc,cur) => ({ ...acc,[cur.title]: cur.value }),{}
);

console.log(data);

,

请使用以下代码。

参考网址 How to use a variable for a key in a JavaScript object literal?

const mydata = [
    {
      "id": 001,"value": "Value 1","title": "Title 1"
    },{
      "id": 002,"value": [
        {
          "Name": "Name 1","Age": "20"
        },{
          "Name": "Name 2","Age": "30"
        },"title": "Title 2"
    },];

let reData = []; 
mydata.forEach((dt)=>{
  reData.push({[dt.title]: dt.value});
});
console.log(reData);

,

您的地图函数有错误,您的键分配有另一个错误。让我们修复它。

const newData = mydata.map((dt: any) => ({
  [dt.title]: dt.value,}));

第一:你不能从没有括号的箭头函数返回一个对象,如果你不使用它,代码会认为它是一个函数体而不是一个对象。

第二:如果你想返回一个值作为键,你需要把它放在“[]”(方括号)中

就这样,简单的错误,最后你想出了正确的逻辑来解决它

,
  1. 在返回值周围添加括号。
  2. 计算属性名称使用方括号。

const mydata = [
    {
      "id": 001,];
const res = mydata.map(({value,title})=>({[title]: value}));
console.log(res);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。