首页 > 解决方案 > JSON 解析图不是函数

问题描述

当我制作数据地图时,我得到了错误。问题出在哪里?

错误:UnhandledPromiseRejectionWarning:TypeError:betsModel.map 不是函数

axios 响应(字符串!):

var betsModel = {"13721":{"IdG":"1","N":"[] - 1","T":7,"A":true},"13722":{"IdG":"1","N":"[] - 2","T":7,"A":true},"6352":{"IdG":"1","N":"Zaman Sona Erdiğinde Beraberlik","T":1,"A":true}};

解析器

module.exports = (req, res) => {
    var uri = 'x';
    Axios({
        method: "GET",
        url: uri,
        timeout: 5000
    }).then(async response => {
        var e = response.data.match(/\= \{(.*?)\}\}\;/g);
        var betsModel = e[1].replace(/= /g,'');
        betsModel = JSON.parse(betsModel.replace(/}};/g,'}}'));
        betsModel.map(a => {
            console.log(a);
        });
    });
}

标签: javascriptnode.js

解决方案


对象迭代和数组迭代是两个不同的东西。这里的“betsModel”是一个对象。因此地图功能将不起作用。

实现你所做的事情的方法很少。

1. Object.Values MDN 参考 Object.Values

Object.values(betsModel).map(value => {
         console.log(a);
    });

2. For In MDN 参考 for , FOR IN

for (const prop in betsModel) {   
        if (betsModel.hasOwnProperty(prop)) {
             console.log(`obj.${prop} = ${obj[prop]}`);   
        } 
     }

这是一个类似的问题 How to loop through a plain JavaScript object with the objects as members


推荐阅读