将嵌套对象数组的值更改为字符串

时间:2019-03-08 15:29:45

标签: javascript arrays object

这是我当前拥有的数组

const myArr = [
    {
      "code": {
        "value": "AC16",
        "description": "text"
      },
      "convictionDate": {
        "value": "2019-03-07"
      }
    },
    {
      "code": {
        "value": "AC20",
        "description": "text"
      },
      "convictionDate": {
        "value": "2019-03-06"
      }
    }
  ];

我想映射到数组内的每个嵌套对象,以使每个嵌套对象的值都是该对象的value属性(字符串)。因此该对象将变为:

const myArr = [
    {
      "code": "AC16",
      "convictionDate":"2019-03-07"
    },
    {
      "code":"AC20",
      "convictionDate": "2019-03-06"
    }
  ]

我尝试了此尝试,但没有成功:

const x = myArr.map((item)=>{
        console.log(item)
        Object.keys(item).map(function(key,i) {
            item[key] = item[key][value];
        })
    })

4 个答案:

答案 0 :(得分:1)

映射数组,并将条目减少为所需的对象形式:

const myArr = [{"code":{"value":"AC16","description":"text"},"convictionDate":{"value":"2019-03-07"}},{"code":{"value":"AC20","description":"text"},"convictionDate":{"value":"2019-03-06"}}];
  
const result = myArr.map(o =>
  Object.entries(o).reduce((r, [k, { value }]) => ({ ...r, [k]: value }), {})
);

console.log(result);

答案 1 :(得分:1)

const myArr = [
    {
      "code": {
        "value": "AC16",
        "description": "text"
      },
      "convictionDate": {
        "value": "2019-03-07"
      }
    },
    {
      "code": {
        "value": "AC20",
        "description": "text"
      },
      "convictionDate": {
        "value": "2019-03-06"
      }
    }
  ];
  
let newArray = myArr.map(e => {
  return { "code":e.code.value, "convictionDate": e.convictionDate.value}
})

console.log(newArray);

答案 2 :(得分:1)

您快到了。只需使用数组映射

const myArr = [{
    "code": {
      "value": "AC16",
      "description": "text"
    },
    "convictionDate": {
      "value": "2019-03-07"
    }
  },
  {
    "code": {
      "value": "AC20",
      "description": "text"
    },
    "convictionDate": {
      "value": "2019-03-06"
    }
  }
];

let newArray = myArr.map(function(item) {
  return {
    code: item.code.value,
    convictionDate: item.convictionDate.value

  }

});
console.log(newArray)

答案 3 :(得分:0)

毋庸置疑,W3学校提供了一些很棒的参考资料,在其article here

中提供了详细的参考资料

那是...

为什么不简化一下代码,然后对您的数组尝试一下:-

const myArr = [
    {
      "code": {
        "value": "AC16",
        "description": "text"
      },
      "convictionDate": {
        "value": "2019-03-07"
      }
    },
    {
      "code": {
        "value": "AC20",
        "description": "text"
      },
      "convictionDate": {
        "value": "2019-03-06"
      }
    }
  ];

// PROPOSED SOLUTION CODE
const x = myArr.map((item)=>{
        return {code: item.code.value,convictionDate: item.convictionDate.value}
    });

// Your Desired Example Provided in Question
const xArr = [
    {
      "code": "AC16",
      "convictionDate":"2019-03-07"
    },
    {
      "code":"AC20",
      "convictionDate": "2019-03-06"
    }
  ];

// Output Validation
console.log('Response of Array \'x\'');
console.log(x);
console.log('Your Desired Example');
console.log(xArr);

使用“地图”时;我们必须将源数组('myArr')映射到新的目标数组('x')。

在您提供的示例代码的上下文中,未定义“ data.convictions”。

魔力全在这里:-

const x = myArr.map((item)=>{
        return {code: item.code.value,convictionDate: item.convictionDate.value}
    });

编码愉快!