首页 > 解决方案 > 为什么元素没有被推入数组?

问题描述

我在react-native应用程序中有以下代码。

responseJson是我从 API 调用中得到的。

下面代码中的问题是,我推入的元素resultJson在函数调用之外不存在,map即,resultJson即使在map调用内部resultJson确实得到了更新,它们仍然为空。是一个数组,但它的值在调用quaterly后被保留。map我已经为responseJson.

下面的代码有什么问题?

    let responseJson = { "Q1-2018": [ { "total_rows": 742, "avg_price": "2776280.6469", "avg_sqft_price": "1592.5728", "yr": 2018, "evidence": "ACT" }, { "total_rows": 133, "avg_price": "1381205.4436", "avg_sqft_price": "974.9925", "yr": 2018, "evidence": "MOR" }, { "total_rows": 147, "avg_price": "1730154.9524", "avg_sqft_price": "1472.4966", "yr": 2018, "evidence": "MOU" }, { "total_rows": 580, "avg_price": "1797097.3069", "avg_sqft_price": "2043.7190", "yr": 2018, "evidence": "TRA" }, { "total_rows": 61, "avg_price": "4075409.8361", "avg_sqft_price": "1415.8033", "yr": 2018, "evidence": "VAL" } ], "Q2-2018": [ { "total_rows": 1090, "avg_price": "2585032.2220", "avg_sqft_price": "1578.9303", "yr": 2018, "evidence": "ACT" }, { "total_rows": 199, "avg_price": "1426902.3769", "avg_sqft_price": "1060.0000", "yr": 2018, "evidence": "MOR" }, { "total_rows": 84, "avg_price": "1900348.8214", "avg_sqft_price": "1332.6071", "yr": 2018, "evidence": "MOU" }, { "total_rows": 638, "avg_price": "1810675.6536", "avg_sqft_price": "1681.9812", "yr": 2018, "evidence": "TRA" }, { "total_rows": 60, "avg_price": "2908750.0000", "avg_sqft_price": "1458.7667", "yr": 2018, "evidence": "VAL" } ], "Q3-2018": [ { "total_rows": 971, "avg_price": "2562323.0505", "avg_sqft_price": "1569.8218", "yr": 2018, "evidence": "ACT" }, { "total_rows": 192, "avg_price": "1574309.7813", "avg_sqft_price": "1175.7865", "yr": 2018, "evidence": "MOR" }, { "total_rows": 56, "avg_price": "1807243.6429", "avg_sqft_price": "1275.6607", "yr": 2018, "evidence": "MOU" }, { "total_rows": 371, "avg_price": "1629974.8113", "avg_sqft_price": "1389.6577", "yr": 2018, "evidence": "TRA" }, { "total_rows": 65, "avg_price": "1922692.3077", "avg_sqft_price": "1341.2615", "yr": 2018, "evidence": "VAL" } ], "Q4-2018": [ { "total_rows": 1426, "avg_price": "2541386.3191", "avg_sqft_price": "1527.2468", "yr": 2018, "evidence": "ACT" }, { "total_rows": 163, "avg_price": "1440970.0491", "avg_sqft_price": "952.3129", "yr": 2018, "evidence": "MOR" }, { "total_rows": 91, "avg_price": "1571781.8352", "avg_sqft_price": "1244.3077", "yr": 2018, "evidence": "MOU" }, { "total_rows": 429, "avg_price": "1626291.2727", "avg_sqft_price": "1434.8834", "yr": 2018, "evidence": "TRA" }, { "total_rows": 61, "avg_price": "1797540.9836", "avg_sqft_price": "1251.2623", "yr": 2018, "evidence": "VAL" } ], "Q1-2019": [ { "total_rows": 1391, "avg_price": "2755570.1855", "avg_sqft_price": "1457.6204", "yr": 2019, "evidence": "ACT" }, { "total_rows": 126, "avg_price": "1005182.1111", "avg_sqft_price": "812.4762", "yr": 2019, "evidence": "MOR" }, { "total_rows": 18, "avg_price": "1680666.6667", "avg_sqft_price": "1287.3333", "yr": 2019, "evidence": "MOU" }, { "total_rows": 362, "avg_price": "1769586.9586", "avg_sqft_price": "1506.7099", "yr": 2019, "evidence": "TRA" }, { "total_rows": 40, "avg_price": "1974375.0000", "avg_sqft_price": "1292.5500", "yr": 2019, "evidence": "VAL" }]};
    let resultJson = [];
    let avgJson = [];
    let quarterly = [];
    Object.keys(responseJson).map((value, key) => {
      quarterly.push(value);
      responseJson[value].map((value, key) => {
        const evidence = value.evidence;
        if (typeof resultJson[evidence] === "undefined") {
          resultJson[evidence] = [];
        }
        resultJson[evidence].push(value);
        console.log(
          "resultJson[evidence]",
          resultJson[evidence].length,
          resultJson[evidence]
        );
      });
    });

标签: javascriptarraysreact-nativescope

解决方案


您正在尝试访问数组中的键,就好像它是一个对象一样。不知何故 Javascript 允许它,并且实际上存储它们,所以你可以在console.log(resultJson["ACT"])之后仍然获得价值。

但是让 resultJson 成为一个对象可能更有意义。

let resultJson = {}


推荐阅读