我需要您的幫助才能從資料庫中獲取資料。我使用 sql.js 并且 db.exec 提供了一個物件 res:
const res = db.exec('select time_,temp from sensors where topic=\"/xx/sensors\" limit 10')
res 看起來像這樣:
Array [ {…} ]
?
0: Object { columns: (2) […], values: (10) […] }
??
columns: Array [ "time_", "temp" ]
???
0: "time_"
???
1: "temp"
???
length: 2
???
??
values: Array(10) [ (2) […], (2) […], (2) […], … ]
???
0: Array [ "23:53:01", 19.51 ]
???
1: Array [ "23:55:01", 19.51 ]
???
2: Array [ "23:57:01", 19.5 ]
???
3: Array [ "23:59:01", 19.48 ]
???
4: Array [ "00:05:04", 19.47 ]
???
5: Array [ "00:07:04", 19.45 ]
???
6: Array [ "00:09:04", 19.43 ]
???
7: Array [ "00:11:04", 19.43 ]
???
8: Array [ "00:13:04", 19.36 ]
???
9: Array [ "00:15:04", 19.38 ]
???
length: 10
???
res 是一個帶有列的陣列的物件。我怎樣才能讓 time_ 看起來像這樣:
const labels = ['00:13:04', '00:15:04', ...];
和這種格式的溫度:
data = [19.36, 19.38, ...];
你能幫我么?問候
uj5u.com熱心網友回復:
例如,res 如下:
let res = [['1', 1], ['2', 2]]
然后,您需要的值將是:
let labels = res.map(arr => arr[0]);
let data = res.map(arr => arr[1]);
uj5u.com熱心網友回復:
您的結果是一個陣列,其中包含一個物件,而該物件又具有兩個屬性columns和values。看起來您想values通過索引將此物件的陣列映射到兩個單獨的陣列,因此您需要在映射之前適當地訪問該屬性:
const res = [{ columns: [], values: [] }];
const values = res[0].values;
// or with destructuring
const [{ values }] = res;
然后你可以.map()在這個陣列上兩次
const res = [
{
columns: ['time_', 'temp'],
values: [['23:53:01', 19.51], ['23:55:01', 19.51], ['23:57:01', 19.5], ['23:59:01', 19.48], ['00:05:04', 19.47], ['00:07:04', 19.45], ['00:09:04', 19.43], ['00:11:04', 19.43], ['00:13:04', 19.36], ['00:15:04', 19.38],],
},
];
const values = res[0].values;
const labels = values.map((arr) => arr[0]);
const data = values.map((arr) => arr[1]);
console.log('labels: ', labels);
console.log('data: ', data);
或在for回圈中使用單次傳遞(此處使用for...of和解構每個元組)
const res = [
{
columns: ['time_', 'temp'],
values: [['23:53:01', 19.51], ['23:55:01', 19.51], ['23:57:01', 19.5], ['23:59:01', 19.48], ['00:05:04', 19.47], ['00:07:04', 19.45], ['00:09:04', 19.43], ['00:11:04', 19.43], ['00:13:04', 19.36], ['00:15:04', 19.38],],
},
];
const labels = [];
const data = [];
for (const [label, datum] of res[0].values) {
labels.push(label);
data.push(datum);
}
console.log('labels: ', labels);
console.log('data: ', data);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/365836.html
標籤:javascript sql 数组 sqlite 目的
