【问题标题】:Separate an object in a array of objects分隔对象数组中的一个对象
【发布时间】:2021-01-09 09:32:19
【问题描述】:

我正在使用来自 API 的数据

"stats": [
{
  "base_stat": 48,
  "effort": 1,
  "stat": {
    "name": "hp",
    "url": "https://pokeapi.co/api/v2/stat/1/"
  }
},
{
  "base_stat": 48,
  "effort": 0,
  "stat": {
    "name": "attack",
    "url": "https://pokeapi.co/api/v2/stat/2/"
  }
}]

所以当我收到这个时,我正在做 =>

const selectedStats = stats.reduce(
(acc, stat) => ({ ...acc, [stat.stat.name]: stat.base_stat }),
{} ); 
    // OUTPUT => stats: {
attack: 48
hp: 48 }

但现在我试图在一个对象数组中分离一个对象,比如

[{attack: 81}, {hp: 48}, etc]

但我不知道该怎么做

对不起,如果这是一个大问题,但我没有得到解决。谢谢!

【问题讨论】:

    标签: arrays object key-value


    【解决方案1】:

    只需mapping Object.entries() 的结果就可以了:

    const stats = {
      attack: 48,
      hp: 48
    };
    
    const data = Object.entries(stats).map(([k, v]) => ({[k]: v}));
    
    console.log(data);

    不过,您不需要中间的 reduce()。由于您从数组开始,因此您可以在单个 map() 操作中完成所有操作:

    const stats = [{
      "base_stat": 48,
      "effort": 1,
      "stat": {
        "name": "hp",
        "url": "https://pokeapi.co/api/v2/stat/1/"
      }
    }, {
      "base_stat": 48,
      "effort": 0,
      "stat": {
        "name": "attack",
        "url": "https://pokeapi.co/api/v2/stat/2/"
      }
    }];
    
    const data = stats.map(({base_stat, stat: {name}}) => ({[name]: base_stat}));
    
    console.log(data);

    【讨论】:

    • 该死,我现在看到解决方案感觉很愚蠢哈哈,谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2019-07-25
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2018-10-04
    相关资源
    最近更新 更多