javascript JS从数组中获取对象位置

svmlkihl  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(140)

我的应用程序比较API数据,在我的例子中是温度。我已经为每个API编写了一个函数,如下所示:

async function prepData(n) {
    const a = [];
    if ((n == 0)) {
        const json = await firstAPI();
        for (var i = 0; i <= c; i++) {
            a.push(json.shortIntervals[i].temperature.value);
        }
        console.log(a);
        return a;
    } else {
        const json = await secondAPI();
        for (var i = 0; i <= c; i++) {
            a.push(
            json.properties.timeseries[i].data.instant.details.air_temperature,
            );
        }
        console.log(a);
        return a;
    }
    }

这段代码工作成功,但它有很多重复的代码,因此我想改变它。
我已经成功地合并了获取函数,并通过传递“n”从数组中调用API url,“n”决定了我想访问哪个API。现在我面临的问题是我不能访问不同位置的数据。当前代码如下所示:

const dataLocation = ['json.first.api.path', 'json.seccond.api.path']

    async function prepData(n) {
    const a = [];

    const json = await fetching(n);
    for (var i = 0; i <= c; i++) {
        a.push(dataLocation[n]);
    }
    console.log(a);
    return a;

你可以看到,我现在已经把datalocation存储在一个数组中,但是我不能“执行”它,如果我把“dataLocation[n]”直接放在我把路径作为一个字符串添加到新的数组中,然后用引号把数组名推出来。
我如何告诉Javascript它应该在数组中定义的位置中查找?
另外:“c”是代码前面定义的一个数字,它定义了从API访问的数据量。

dgiusagp

dgiusagp1#

在prepData中,您将n值赋给0,而不是检查:

async function prepData(n) {
    const a = [];
    if ((n = 0)) { // **you have error here, please change it to (n == 0)**
        const json = await firstAPI();
        for (var i = 0; i <= c; i++) {
            a.push(json.shortIntervals[i].temperature.value);
        }
        console.log(a);
        return a;
    } else {
        const json = await secondAPI();
        for (var i = 0; i <= c; i++) {
            a.push(
            json.properties.timeseries[i].data.instant.details.air_temperature,
            );
        }
        console.log(a);
        return a;
    }
    }

相关问题