我有这种形式的数据
[
{ device_id: '12335',
timestamp: '2018-05-14T08:31:23.000Z',
temperatur: 21,
pressure: 31,
humidity: 20,
equipment_name: 'truck5' },
{ device_id: '12335',
timestamp: '2018-05-14T08:31:31.000Z',
temperatur: 28,
pressure: 35,
humidity: 25,
equipment_name: 'truck5' },
{ device_id: '12335',
timestamp: '2018-05-14T08:31:33.000Z',
temperatur: 36,
pressure: 44,
humidity: 33,
equipment_name: 'truck5' },
{ device_id: '12335',
timestamp: '2018-05-14T08:31:36.000Z',
temperatur: 31,
pressure: 39,
humidity: 30,
equipment_name: 'truck5' },
{ device_id: '12345',
timestamp: '2018-05-14T08:31:23.000Z',
temperatur: 21,
pressure: 31,
humidity: 20,
equipment_name: 'truck5' },
{ device_id: '12345',
timestamp: '2018-05-14T08:31:31.000Z',
temperatur: 28,
pressure: 35,
humidity: 25,
equipment_name: 'truck5' },
{ device_id: '12345',
timestamp: '2018-05-14T08:31:33.000Z',
temperatur: 36,
pressure: 44,
humidity: 33,
equipment_name: 'truck5' },
{ device_id: '12345',
timestamp: '2018-05-14T08:31:36.000Z',
temperatur: 31,
pressure: 39,
humidity: 30,
equipment_name: 'truck5' } ]
这是我从我的 sql 数据库中取回的数据。所以我用它来存储返回的结果。
var res1 =[];
res1 = JSON.parse(JSON.stringify(result));
但是现在当我在这些数据上使用 map 函数时,我得到了
res1.map() is not a function.
为什么会这样?
Map 函数适用于所有数组对象。当我手动将此数据复制到变量 res1=[{..}]
时,它正在工作。但现在它不起作用。
console.log(result) gives me this
[ RowDataPacket {
device_id: '12335',
timestamp: 2018-05-14T08:31:23.000Z,
temperatur: 21,
pressure: 31,
humidity: 20,
equipment_name: 'truck5' },
RowDataPacket {
device_id: '12335',
timestamp: 2018-05-14T08:31:31.000Z,
temperatur: 28,
pressure: 35,
humidity: 25,
equipment_name: 'truck5' },
RowDataPacket {
device_id: '12335',
timestamp: 2018-05-14T08:31:33.000Z,
temperatur: 36,
pressure: 44,
humidity: 33,
equipment_name: 'truck5' },
RowDataPacket {
device_id: '12335',
timestamp: 2018-05-14T08:31:36.000Z,
temperatur: 31,
pressure: 39,
humidity: 30,
equipment_name: 'truck5' },
RowDataPacket {
device_id: '12345',
timestamp: 2018-05-14T08:31:23.000Z,
temperatur: 21,
pressure: 31,
humidity: 20,
equipment_name: 'truck5' },
RowDataPacket {
device_id: '12345',
timestamp: 2018-05-14T08:31:31.000Z,
temperatur: 28,
pressure: 35,
humidity: 25,
equipment_name: 'truck5' },
RowDataPacket {
device_id: '12345',
timestamp: 2018-05-14T08:31:33.000Z,
temperatur: 36,
pressure: 44,
humidity: 33,
equipment_name: 'truck5' },
RowDataPacket {
device_id: '12345',
timestamp: 2018-05-14T08:31:36.000Z,
temperatur: 31,
pressure: 39,
humidity: 30,
equipment_name: 'truck5' } ]
这就是我使用 JSON.stringify() 的原因。仅使用 JSON.parse() 就会出现错误。 这是我正在使用的 mysql 函数
db.query(query,
function (err, result, fields) {
if (err) throw err;
var res1 =[];
res1=JSON.parse(JSON.stringify(result));
console.log(res1);
series:[
res1.map(function(s) {
// Meta is only needed if using the tooltip plugin.
return {x: s.timestamp, y: s.temperature, meta: s.temperature + ' on ' + s.timestamp.toDateString()};
})
]
});
在使用 typeof result 或 res 或将其与我们的 without JSON.parse() 一起使用后,我将对象作为类型
最佳答案
JSON.stringify
和 JSON.parse
彼此相反。如果您从 API 获取 JSON 字符串,则需要使用 JSON.parse
将其转换为 JavaScript 对象(在您的情况下为数组)。
另一方面,我认为 JSON.stringify
在这里不会对您有多大帮助。试试这个:
var res1 = JSON.parse(result);
res1.map( ... );
要了解有关您收到的响应类型的更多信息,您可以使用 console.log(typeof result)
。如果在控制台生成 string
,请使用 JSON.parse
。如果它产生 object
,则根本不需要使用 JSON.parse
。
关于javascript - res.map() 不是一个函数,其中 res 是一个数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50328496/