【问题标题】:get new data from api从 api 获取新数据
【发布时间】:2021-01-09 10:00:44
【问题描述】:

您好,我正在尝试从 API 获取新数据(使用 JSON 文件过滤数据) 我想从 API 中过滤数据并使用 JSON 文件进行过滤并获得新内容 我试过了

    const jsnf = JSON.stringify(fs.readFileSync("./data.json", "utf8"));
    const res = await axios.get("https://fortnite-api.com/v2/cosmetics/br/new")
    const data1 = res.data.data.items;
    const data2 = JSON.stringify(data1)
    const data3 = JSON.stringify(Object.values(data1), null, 2)

我也尝试了 console.log data3(来自 JSON 文件的数据)并得到: result for data3 (console.log(data3) )

我还为 data1(来自 api 的数据)做了 console.log 并得到: result for data1 (console.log(data1) )

[如果我这样做:

console.log(data1.filter((x) => jsnf.includes(x)))

我将一无所获[]]

如果你知道如何制作 [ console.log(jsnf == data1) \\true

OR

[ console.log(data1.filter((x) => jsnf.includes(x))) ] \\x = new items from api ] 请告诉我怎么做,谢谢!

【问题讨论】:

  • 你的 jsnf 变量中有什么数据?
  • 而且你在做 stringify... 你必须做 JSON.parse() 代替,以便可以使用 Javascript 函数
  • jsnf的内容是什么? includes 基本上与 === 比较,这对于您的对象肯定会失败,因为对于对象,=== 只有在它们指向相同的引用时才返回 true。显然不是这样,因为一个是从本地文件中读取的,另一个是从 API 返回的。
  • 请添加您的 json 对象和预期输出,以便您了解您真正想要的内容
  • 您能否创建一个 codepen.io 示例,或者暂时提供硬编码的 jsnf 数据:)

标签: javascript json api


【解决方案1】:

当您从本地设备读取文件data.json 并对返回的文件执行JSON.stringify 时。

 const jsnf = JSON.stringify(fs.readFileSync("./data.json", "utf8"));

现在知道它是string,如果您不使用JSON.parse(jsnf),请开始使用您的过滤器逻辑。

console.log(data1.filter((x) => jsnf.includes(x)));

知道这不会按预期工作。

此外,除非我们知道 jsnf 中的数据是什么,否则我们无法确定您的过滤逻辑。

【讨论】:

  • 似乎stringify 仅用于输出目的。 OP 想要在 data1 上执行 filter(),这(最终)是一个从休息调用返回的数组
  • 是吗?感谢您的更新。让我修改我的答案或删除它,如果它现在对任何人都有帮助:)
  • 刚刚更新了我的答案,这样它就更有意义了......实际上,OP 在他/她的问题中表现得并不好:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
  • 2019-01-18
  • 2020-10-17
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
  • 2017-05-31
相关资源
最近更新 更多