【问题标题】:I don't know how to use data from fetch api [closed]我不知道如何使用来自 fetch api 的数据 [关闭]
【发布时间】:2019-07-02 12:21:24
【问题描述】:

我有不到一年的 javascript 经验。 我总是在如何使用来自 api 的数据方面遇到很大的麻烦。

例如,如果我获取类似的产品 api,

我的控制台会显示[{name:'pen',price:4},{name:'jeans',price:5}]

好的,然后如果我想添加产品的所有价格,或者我想使用数据做某事。 所以我用了array.push(data)

但它不起作用,而且看起来像超级混蛋。

所以我想问一下你们最好的处理方法是什么?

var array=[] 
async function getData() { 
    let response = await fetch('products/api');
    let data = await response.json() 
    return data;
}

getData().then(data =>console.log(data))

【问题讨论】:

  • 你到底想达到什么目的?
  • @Sentinel ,我想使用reduce函数来添加产品的所有价格。
  • @Sentinel 所以我需要将数据作为数组。
  • 如果你的对象看起来像是你的控制台正在打印它:[{name:'pen',price:4},{name:'jeans',price:5}] 那么它已经是一个数组
  • @Sentinel 是的,但这仅适用于函数内部。如果我在功能之外执行 console.log(data) 它不起作用

标签: javascript arrays node.js api


【解决方案1】:

如果您的数据采用您提供的形式:

[{name:'pen',price:4},{name:'jeans',price:5}]

这已经是一个数组,你可以做以下总结价格:

async function getData() { 
    let response = await fetch('products/api');
    let data = await response.json() 
    return data;
}

var array = await getData();
const reducer = (accumulator, currentValue) => accumulator + currentValue.price;

console.log(array.reduce(reducer, 0));

应该打印 14。请注意,要使用 await,您必须在异步函数中。如果您想使用 then() ,您可以执行以下操作:

var array = [];
const reducer = (accumulator, currentValue) => accumulator + currentValue.price;

getData().then(data => {
    array = data;
    console.log(array.reduce(reducer, 0));
});

如果您想对数据进行更多操作,则必须在 then() 函数中进行。

查看 MSDN 的 reduce 函数:

【讨论】:

  • 酷!谢谢哥们!
  • 不客气。但是你应该检查承诺和等待/异步。您在那之后没有任何数据的原因是因为它是异步的。所以为了更好地理解这一点,你应该研究这些东西。
  • await 仅适用于异步函数
  • @husanu 是的,你是对的,我改变了答案。如果您发现任何错误或会以不同的方式编写,请随时编辑我的答案。谢谢。
  • 当然你也可以写一个答案:)
猜你喜欢
  • 2022-01-01
  • 2018-08-01
  • 2013-12-30
  • 2014-11-24
  • 2019-10-20
  • 2020-10-04
  • 2021-10-24
  • 2017-11-26
  • 2020-06-25
相关资源
最近更新 更多