我正在嘗試將串列資料存盤到從 axios 回應接收到的物件中。第一組資料是標題,我作為陣列存盤在 cols 中,其余的存盤在行中。接收到的資料已全部定義,并在決議后完美記錄在控制臺中,即全部定義。當開始加載行元素時,在回圈內部,第一組元素被存盤,但對于下一組元素,即i = 2 的值,我收到錯誤說不能設定未定義的屬性(設定 0)。
為方便起見,我更改了從 axios 接收的資料型別
let response = {data:'"A","B"\n"C","D"\n"E","F"'} //await axios(URL)
let raw = response.data.split(/\r?\n/);
let data = {
cols:[],
rows:[] // I have tried rows:[[]] or rows:[{v:[]}]
}
for (let i in raw) {
raw[i] = raw[i].split(",");
for(let j in raw[i]){
raw[i][j] = raw[i][j].replace(/"/g, '')
if (i==0)
data.cols[j]=raw[i][j]
else{
data.rows[i-1][j]=raw[i][j] // for rows as object => data.rows[i-1].v[j]
//console.log(i '->' data.rows[i-1])
}
}
}
return data // this is not matter of concern
}
我嘗試將行陣列宣告為二維陣列,但錯誤仍然存??在。將滑鼠懸停在物件上會給出行(屬性):never[] 和 cols 相同。
uj5u.com熱心網友回復:
你可以做:
const response = { data: '"A","B"\n"C","D"\n"E","F"' }
const [cols, ...rows] = response.data.split(/\r?\n/).map(r => r.match(/[A-Z] /g))
const data = { cols, rows }
console.log(data)
uj5u.com熱心網友回復:
你可以做這樣的事情
let response = {data:'"A","B"\n"C","D"\n"E","F"'}
const [cols, ...rows] = response.data.split('\n').map(r => r.replace(/"/g, '').split(','))
const data = {
cols,
rows
}
console.log(data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/488760.html
標籤:javascript 数组 json 目的
