如何解决如何使用其属性值作为属性键重新格式化对象?
我有一组数据:
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,}));
第一:你不能从没有括号的箭头函数返回一个对象,如果你不使用它,代码会认为它是一个函数体而不是一个对象。
第二:如果你想返回一个值作为键,你需要把它放在“[]”(方括号)中
就这样,简单的错误,最后你想出了正确的逻辑来解决它
,- 在返回值周围添加括号。
- 计算属性名称使用方括号。
const mydata = [
{
"id": 001,];
const res = mydata.map(({value,title})=>({[title]: value}));
console.log(res);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。