【问题标题】:Remapping Firebase JSON data in React Native在 React Native 中重新映射 Firebase JSON 数据
【发布时间】:2020-03-26 18:21:20
【问题描述】:

编辑:在了解有关我的初始问题的更多信息后,我不得不更改此问题。

有如下所示的数据:

{
  "-fdsdsghdfsgsfdfdgfd" : {
    "latitude" : -37.830331,
    "longitude" : 144.9923426,
    "found" : false
  },
  "-dsdgfrdhfdgfdgdgfd" : {
    "latitude" : -37.830331,
    "longitude" : 144.9923426,
    "found" : false
  },
  "-Lv3cEcoiJ1wtajIzPyy" : {
    "latitude" : -37.830331,
    "longitude" : 144.9923426,
    "found" : false
  }
}

这样导入 import waypoint from '../data/jobdata.json';

是否可以轻松地重新映射数据以遵循这种形式...

const waypoint = [
    {latitude: -37.830331, longitude: 144.9923426, found: false },
    {latitude: -37.830331, longitude: 144.9923426, found: false },
    {latitude: -37.830331, longitude: 144.9923426, found: false }
];

我只是不太了解 React Native,无法理解如何解决这个问题。

我不想从 Firebase 获取数据,我们假设它是一个像上面这样的 JSON 文件。

谢谢

【问题讨论】:

  • 试试Object.values(data).map(item => <Component />)
  • @ThomasByy 你想迭代所有对象或单个对象,因为你的键是相同的,这就是它避免所有对象的原因
  • 您好,抱歉,我相信您的信息可能有所帮助,但我遇到了一个更大的问题,只需要数据看起来略有不同。我已经用我现在意识到我需要的东西编辑了这个问题。对不起,谢谢
  • 我很困惑,所以你想把 "-Lv3cEcoiJ1wtajIzPyy" : { "latitude" : -37.830331, "longitude" : 144.9923426, "found" : false }, 转换成 const waypoint = [ {latitude: -37.827047,经度:144.991987,发现:假},{纬度:-37.828288,经度:144.991708,发现:假},{纬度:-37.826503,经度:144.995964,发现:假},{纬度:-37.826835,经度: 144.992808,发现:假},{纬度:-37.825441,经度:144.991112,发现:假}];对吗?
  • @ThomasByy 你能再解释一下吗?为什么存在重复的键并且所有对象都具有相同的值,那么为什么要在数组中重复相同的对象。

标签: json reactjs firebase react-native


【解决方案1】:

因为您是从 firebase 获取它,所以我认为密钥应该是唯一的。所以你可以使用下面的方式来实现数据。

您可以使用Object.keys

const obj = {
  "-Lv3cEcoiJ1wtajIzPyy": {
    "latitude": -37.830331,
    "longitude": 144.9923426,
    "found": false
  }
}

const transformed = Object.values(obj)

console.log(transformed)

【讨论】:

    【解决方案2】:

    如果您有重复的键,那么Object.values 将丢弃重复的键。

    let data = {
      "-Lv3cEcoiJ1wtajIzPyy" : {
        "latitude" : -37.830331,
        "longitude" : 144.9923426,
        "found" : false
      },
      "-Lv3cEcoiJ1wtajIzPyy" : {
        "latitude" : -37.830331,
        "longitude" : 144.9923426,
        "found" : false
      },
      "-Lv3cEcoiJ1wtajIzPyy" : {
        "latitude" : -37.830331,
        "longitude" : 144.9923426,
        "found" : false
      }
    }
    let output = Object.values(data);
    console.log(output);

    【讨论】:

    • 你能解释一下如何得到新数组中的最后一个吗? Object.values(waypoints)[Object.values(waypoints).length] 是我的愚蠢尝试。
    【解决方案3】:

    假设每个子对象都有唯一的对象键,下面是解决方案。现在你可以遍历Object.values(data)

    let data = {
      "First" : {
        "latitude" : -37.830331,
        "longitude" : 144.9923426,
        "found" : false
      },
      "Second" : {
        "latitude" : -37.830331,
        "longitude" : 144.9923426,
        "found" : false
      },
      "Third" : {
        "latitude" : -37.830331,
        "longitude" : 144.9923426,
        "found" : false
      }
    }
    
    console.log(Object.values(data));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 2019-03-10
      • 2020-08-21
      • 2022-01-09
      相关资源
      最近更新 更多