Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过动态获取密钥来存储对象值?_Javascript_Reactjs_Ecmascript 6 - Fatal编程技术网

Javascript 如何通过动态获取密钥来存储对象值?

Javascript 如何通过动态获取密钥来存储对象值?,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,使用以下对象数组,如何获取每个键的值并将其保存为下面提到的所需名称和值结构格式 { list: [ [ { Desc: { value: '7777 - Florida Hurricane' }, DSTR_NR: { value: '7777' } }, { ST_NM: { value: 'Alaska'

使用以下对象数组,如何获取每个键的值并将其保存为下面提到的所需名称和值结构格式

{
  list: [
    [
      {
        Desc: {
          value: '7777 - Florida Hurricane'
        },
        DSTR_NR: {
          value: '7777'
        }
      },
      {
        ST_NM: {
          value: 'Alaska'
        },
        ST_CD: {
          value: 'AK'
        }
      },
      {
        Desc: {
          value: '7172 - Virginia Severe Storm(s)'
        },
        DSTR_NR: {
          value: '7172'
        }
      },
      {
        ST_NM: {
          value: 'Florida'
        },
        ST_CD: {
          value: 'FL'
        }
      },
      {
        Desc: {
          value: '7002 - Maryland Hurricane'
        },
        DSTR_NR: {
          value: '7002'
        }
      },
      {
        ST_NM: {
          value: 'Louisiana'
        },
        ST_CD: {
          value: 'LA'
        }
      }
    ]
  ]
}
无论api返回灾难相关数据还是状态相关数据,我都需要的所需格式。我只需要将数据值存储在名称/值对中,如下所示:

{
  list: [
    {
      name: '7777',
      value: '7777 - Florida Hurricane'
    },
    {
      name: 'AK',
      value: 'Alaska'
    },
    ...
  ]
}
以下是我当前的代码:

let newData = {}
  list.forEach((value) => {
    Object.keys(value).forEach((key) => {
      if(newData[key] === undefined){
        newData[key] = [value[key]]
      } else {
        newData[key].push(value[key])
      }
    })
  });

如果数据始终包含第一个值和第二个名称,则可以执行以下操作:

// let response = { list: [...] }
let result = {
  list: []
};

response.list.forEach(sublist => {
  sublist.forEach(elem => {
    let keys = Object.keys(elem);
    result.list.push({
      name: elem[ keys[1] ].value,
      value: elem[ keys[0] ].value,
    })
  });
})

console.log("RESULT: ", result);

如果数据始终包含第一个值和第二个名称,则可以执行以下操作:

// let response = { list: [...] }
let result = {
  list: []
};

response.list.forEach(sublist => {
  sublist.forEach(elem => {
    let keys = Object.keys(elem);
    result.list.push({
      name: elem[ keys[1] ].value,
      value: elem[ keys[0] ].value,
    })
  });
})

console.log("RESULT: ", result);

可以像这样映射对象

const res={
名单:[
[
{
描述:{
值:“7777-佛罗里达飓风”
},
DSTR_编号:{
值:“7777”
}
},
{
新墨西哥州圣卢西亚:{
价值:“阿拉斯加”
},
圣卢西亚:{
价值:“AK”
}
},
{
描述:{
值:“7172-弗吉尼亚州严重风暴”
},
DSTR_编号:{
值:“7172”
}
},
{
新墨西哥州圣卢西亚:{
价值:“佛罗里达”
},
圣卢西亚:{
值:“FL”
}
},
{
描述:{
值:“7002-马里兰飓风”
},
DSTR_编号:{
值:“7002”
}
},
{
新墨西哥州圣卢西亚:{
价值:路易斯安那州
},
圣卢西亚:{
值:“LA”
}
}
]
]
}
const list=res.list[0];
const format=list.map(i=>{
常量项=对象值(i);
常量newItem={}
newItem.name=items[1]。值;
newItem.value=项[0]。值;
返回新项目
})

log(格式)
您可以像这样映射对象

const res={
名单:[
[
{
描述:{
值:“7777-佛罗里达飓风”
},
DSTR_编号:{
值:“7777”
}
},
{
新墨西哥州圣卢西亚:{
价值:“阿拉斯加”
},
圣卢西亚:{
价值:“AK”
}
},
{
描述:{
值:“7172-弗吉尼亚州严重风暴”
},
DSTR_编号:{
值:“7172”
}
},
{
新墨西哥州圣卢西亚:{
价值:“佛罗里达”
},
圣卢西亚:{
值:“FL”
}
},
{
描述:{
值:“7002-马里兰飓风”
},
DSTR_编号:{
值:“7002”
}
},
{
新墨西哥州圣卢西亚:{
价值:路易斯安那州
},
圣卢西亚:{
值:“LA”
}
}
]
]
}
const list=res.list[0];
const format=list.map(i=>{
常量项=对象值(i);
常量newItem={}
newItem.name=items[1]。值;
newItem.value=项[0]。值;
返回新项目
})

console.log(格式)
您能提供更多数据吗?提供的数据不足以理解它所遵循的模式。您的输入具有无效的表示法:数组文字不能具有命名属性。在(无效)输入和所需输出之间没有明显的通用映射。我刚刚用更多数据更新了我的帖子。这就是我从后端api接收到的数据。这与以前的数据有很大不同@肖恩。我会放一个链接到你正在调用的API以获得准确的数据。你能提供更多的数据吗?提供的数据不足以理解它所遵循的模式。您的输入具有无效的表示法:数组文字不能具有命名属性。在(无效)输入和所需输出之间没有明显的通用映射。我刚刚用更多数据更新了我的帖子。这就是我从后端api接收到的数据。这与以前的数据有很大不同@肖恩。我会放一个链接到你正在调用的API,以获得准确的数据。这就像一个魅力,正是我所寻找的。非常感谢你,阿雷格。这很有魅力,正是我想要的。非常感谢你,阿雷格。