【问题标题】:Override index array from API result从 API 结果覆盖索引数组
【发布时间】:2019-06-01 18:10:47
【问题描述】:

在 redux 状态下覆盖数组索引时遇到问题:/

我正在从端点接收数据,结果是:

例如

data: 
 [{
    0: {id: 123, name: test1 },
    1: {id: 456, name: test2 },
    3: {id: 789, name: test3 },
 }]

但我想根据结果对象更改数组的索引。

data:
 [{
    123: {id: 123, name: test1 },
    456: {id: 456, name: test2 },
    789: {id: 789, name: test3 },
 }]

然后将这些保存到reducer。

这是从端点返回的确切数据。

我试过了

let data = action.payload.data.map(item => {
    return {
        [item.id]: item
    }
})

得到结果

[
0: {123: {id: 123, name: 'test1'}},
1: {456: {id: 456, name: 'test2'}}
]

非常感谢任何帮助!

【问题讨论】:

    标签: javascript arrays reactjs redux state


    【解决方案1】:

    Array.map()Object.values()Array.reduce() 的组合一定可以解决问题:

    const data = [{
    
    0: {id: 123, name: "test1" },
    
    1: {id: 456, name: "test2" },
    
    3: {id: 789, name: "test3" },
    
    }];
    
    const output = data.map(obj => Object.values(obj).reduce((acc, a) => ({ ...acc, [a.id]: a }), {}));
    
    console.log(output);

    【讨论】:

      【解决方案2】:

      你可以使用mapObject.entriesObject.fromEntries

      let data = [{0: { id: 123,name: 'test1'},1: {id: 456,name: 'test2'}, 3: {id: 789,name: 'test3'},}]
      
      let op = data.map(val => Object.fromEntries(Object.entries(val).map(([key, value]) => [value.id, value])))
      
      console.log(op)

      或者你可以使用mapObject.valuesreduce

      let data = [{0: { id: 123,name: 'test1'},1: {id: 456,name: 'test2'}, 3: {id: 789,name: 'test3'},}]
      
      let op = data.map(val=> {
        let values = Object.values(val)
        let obj = values.reduce((op, inp) => {
          op[inp.id] = inp
          return op
        },{})
        return obj  
      })
      
      console.log(op)

      【讨论】:

      • 谢谢,但似乎不起作用,顺便说一下,ID 是一个字符串,这是返回的数据:data = [ {fixtureId: 123,name: 'test1'}, {fixtureId: 456,name :'test2'},{fixtureId:789,名称:'test3'}]
      • @siney71 什么不起作用你能解释一下你面临的问题吗?答案与您发布的数据一致,因为这里的密钥已更改,因此您需要使用fixtureId 而不是id,您可以使用您尝试过的代码更新问题
      猜你喜欢
      • 2013-01-27
      • 2023-03-15
      • 2018-11-16
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 2011-05-09
      • 2021-01-23
      • 1970-01-01
      相关资源
      最近更新 更多