简体   繁体   English

rest api 得到一个 javascript 对象的数组

[英]rest api get an array of javascript objects

I am consuming this public api, the problem I have is that it is selecting an array of objects within the object field and I cannot access these values in the console, it shows me this (10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]我正在使用这个公共 api,我遇到的问题是它正在选择 object 字段中的对象数组,我无法在控制台中访问这些值,它向我显示了这个 (10) [{…},{…}, {…}、{…}、{…}、{…}、{…}、{…}、{…}、{…}]

const url = https://catfact.ninja/facts ;常量 url = https://catfact.ninja/facts

    const getFact = () => {
    return fetch('https://catfact.ninja/facts' ,
    {
        method: 'GET',
        headers: {
            'Content-Type': 'application/json'
        }})
    .then(res => res.json())
    }
    const createFactDiv = (fact) => {
        const factContainer = document.createElement('div');
        const setup = document.createElement('p');
      
        setup.innerText = fact.data
        console.log(fact.data);
        factContainer.append(setup);
      
        return factContainer
      }
    const appendFact = (factDiv) => {
    const factContainer = document.getElementById('factContainer');
    factContainer.append(factDiv);
    }

    //This is unused
    /*
    document.addEventListener('DOMContentLoaded', () => {
    })
    */

    getFact().then ((fact) => {
    const factDiv = createFactDiv(fact);
    appendFact(factDiv);
    })

enter image description here在此处输入图像描述

console.log(JSON.stringify(fact.data));

You can do a console.log(JSON.stringify(fact.data))你可以做一个 console.log(JSON.stringify(fact.data))

I think you're getting tripped up because getFact() is actually returning a result set that contains a number of (potentially useful) properties.我认为您被绊倒了,因为getFact()实际上返回的结果集包含许多(可能有用的)属性。 It should probably be called getFacts() , because the .data property contains an array of multiple facts.它可能应该被称为getFacts() ,因为.data属性包含多个事实的数组。

Perhaps try looping over the data array and setting setup.innerText to fact.fact rather than fact.data ?也许尝试循环遍历数据数组并将setup.innerText设置为fact.fact而不是fact.data

const getFacts = () => {
    return fetch('https://catfact.ninja/facts' ,
        {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json'
            }}).then(res => res.json())
    }

const createFactDiv = (fact) => {
    const factContainer = document.createElement('div');
    const setup = document.createElement('p');
  
    setup.innerText = fact.fact;
    console.log(fact.fact);
    factContainer.append(setup);
  
    return factContainer
  }

const appendFact = (factDiv) => {
    const factContainer = document.getElementById('factContainer');
    factContainer.append(factDiv);
}

//This is unused
/*
    document.addEventListener('DOMContentLoaded', () => {
    })
*/

getFacts().then(facts => facts.data.forEach(fact => appendFact(createFactDiv(fact))))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM