我对此真的很陌生,我刚刚掌握了 json 数据,我希望它作为常规数组
loginAndDetails.get(`SELECT * FROM logTB` , (err,data) => {
console.log(data)
})
//output might be 1d or 2d
{
entry1: 'data1',
entry2: 'data2',
.,
.,
entryN: 'dataN'
}
loginAndDetails.all(`SELECT * FROM logTB` , (err,data) => {
console.log(data)
})
// alternative output:
[{
entry1: 'data1',
entry2: 'data2',
.,
.,
entryN: 'dataN'
},
{
entry1: 'data1',
entry2: 'data2',
.,
.,
entryN: 'dataN'
}]
但是我已经创建了所有功能来正常工作 JS 数组是这样的
['data1','data2',...,'dataN']
(or)
[['data1','data2',...,'dataN'],
['data1','data2',...,'dataN']]
有没有一种方法可以动态转换所有数据,因为有时它可能是一个二维数组,有时它可能是一个一维数组,并且可能有“n”个对象
我必须创建一个函数来构建它还是有其他方法
你可以这样做,它会给你一个数组的数组。
var finalResult = [];
// checking if data is an array of objects
if (Array.isArray(data)){
for (var i=0; i < data.length; i++ ){
console.log(data[i]);
var result = getFlatArray(data[i]);
finalResult.push(result);
}
console.log(finalResult);
}
else{
finalResult = getFlatArray(data);
console.log(finalResult);
}
function getFlatArray(data){
var result = [];
for(var j in data){
result.push([data[j]]);
}
return result;
}
但是如果您想访问 JSON 对象,您可以执行以下操作。]
1 天:-
data.entry1
对于 2d:-
data
只是一个 javascript 数组,因此您可以使用普通循环遍历它,并使用数组索引访问循环内的对象。
for(var i=0; i < data.length; i++){
// access the data in the loop using array index
data[i].entry1;
}
这里的大部分繁重工作可以通过 Object.values() 完成 然后我们可以使用一个函数来适当地处理 1d 和 2d 结果集
const output1d = {col1: 'col1', col2: 'col2', col3: 'col3'};
const output2d = [{r1col1: 'col1', r1col2: 'col2'}, {r2col1: 'col1', r2col2: 'col2'}];
function resultsToArray(resObj) {
if (Array.isArray(resObj)) {
return resObj.map((item) => Object.values(item));
} else {
return [Object.values(output1d)];
}
};
console.log(resultsToArray(output1d));
console.log(resultsToArray(output2d));
输出...
[ [ 'col1', 'col2', 'col3' ] ]
[ [ 'col1', 'col2' ], [ 'col1', 'col2' ] ]