const qs = require('querystring') let string = 'name-wangyi#pass-123#sex-0' let obj = qs.parse(string, '#', '-')
輸出obj會出現
而我手動改變字符串變對象:
// 實現parse var string1 = 'name=wangyi&pass=123&sex=0' var arr1 = string1.split('&') var arrAll = new Array(); console.log(arr1) for (let i = 0; i < arr1.length; i++) { arrAll.push(arr1[i].split('=')); console.log(arrAll) } var arrObj = new Object(); for (let i = 0; i < arrAll.length; i++) { arrObj[arrAll[i][0]] = arrAll[i][1]; } console.log(arrObj) console.log(qs.parse(string1))
結果:
當然罪魁禍首就是object:null prototype
翻譯一下:該對象沒有原型,所以會顯示出 [Object: null prototype](沒有原型的意思是沒有繼承屬性和方法,例如toString、hasOwnProperty等每個實例化每個對象時都會具有的方法)
官方nodejs文檔解釋如下
解決辦法:
先將對象進行JSON字符串轉化(JSON.stringify()
),然后再轉化成對象(JSON.parse()
)
//解決Object:null prototype的方法: var arrString = JSON.stringify(qs.parse(string1)) var obj = JSON.parse(arrString) console.log("改變后", obj)
原型為Object