【问题标题】:ForIn Loop Works but return doesn't make senseForIn 循环有效,但返回没有意义
【发布时间】:2019-11-26 21:37:12
【问题描述】:

我只想控制台记录从 api 调用返回的 json 的两个属性。我从未使用过请求库。当我尝试遍历正文时,它只返回字符串,我可以看到行车。使用 axios,我拨打了电话并毫无问题地循环了它...

我尝试使用 for、forin 和 object 条目。我不明白输出。

const request = require("request");

async function GetPosts() {
    await request("https://jsonplaceholder.typicode.com/posts", function (error, response, body) {
        for (const key in body) {
            if (body.hasOwnProperty(key)) {
                const element = body[key];
                console.log(element);
            }
        }
    });
}
GetPosts();

我只想从 json 结果中打印标题和正文属性。

【问题讨论】:

    标签: javascript api ecmascript-6 request for-in-loop


    【解决方案1】:

    您需要调用JSON.parse() 将响应正文解析为对象。

    然后当你遍历数组的元素时,你应该只打印你想要的属性,而不是整个对象。

    const request = require("request");
    
    async function GetPosts() {
        await request("https://jsonplaceholder.typicode.com/posts", function (error, response, body) {
            body = JSON.parse(body);
            body.forEach(item => {
                console.log(item.title, item.body);
            });
        });
    }
    GetPosts();
    

    【讨论】:

    • 我没有意识到我必须解析它。我以为图书馆会为我处理它。我习惯使用axios。顺便说一句,当我运行代码时,它会给出两个彼此相邻的未定义。当我这样运行它时,它实际上会记录它。如果你在上面的 sn-p 中建议它应该工作,我做错了什么吗?我非常想使用更简单的语法
    • 我在这里的工作正常,我只想知道如果我可以使用更短的语法,为什么它会返回 undefined
    • 解析后,它实际上将其转换为一个对象数组,我可以在其中使用 for in 循环。现在一切都说得通了。
    • 我没有意识到这是一个对象数组,我已经更新了答案。
    猜你喜欢
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多