第一關:你是不是在找一個數組,而是一個對象。 JS陣列實際上是拖拽的對象,但這不是重點; JS沒有關聯數組,只有對象。但是,爲了回答你的問題:IMO,最簡單的(和我懷疑的,最快的),您可以將字符串轉換爲對象的方法是將其轉換爲有效的JSON:
var str = 'id=1|owner=Vina San Pedro|brandName=1865 Chilean Wine|variantName=1865 Chilean Wine|quality=Standard|minorRegionName=Nordic Countries|vol02=0|vol07=0|vol08=4.25|vol09=4.25|vol10=0|';
var obj = JSON.parse('{"'+str.substring(0,str.length-1).replace(/(=|\|)/g,function(s1,s2)
{
return '"'+(s2 === '=' ? ':' : ',')+'"';
})+'"}');
這是茂密的版本,如果我們打破它:
str.substring(0,str.length-1);//leave out trailing pipe (|)
//if the pipe is not always there:
str = str.substr(-1) === '|' ? str.substring(0,str.length-1) : str;
然後替換所有=
和|
:
str = str.replace(/(=|\|)/g,function(s1,s2)
{//s1 will be the entire matched substring, s2 the first group, not required in this case, but just so you know
return '"'+(s2 === '=' ? ':' : ',') + '"';
});//pipes become comma's, = becomes colon
我們現在幾乎沒有,返回的字符串將id":"1","owner":"Vina San Pedro","brandName":"1865 Chilean Wine","variantName":"1865 Chilean Wine","quality":"Standard","minorRegionName":"Nordic Countries","vol02":"0","vol07":"0","vol08":"4.25","vol09":"4.25","vol10":"0
。正如你所看到的,我們需要添加是在開始和結束的字符串的開閉卷曲的,和一個雙引號,我們結束了有效的JSON:
var obj = JSON.parse('{"'+str+'"}');//returns object
//is the same as:
obj = { brandName: "1865 Chilean Wine",
id: "1",
minorRegionName: "Nordic Countries",
owner: "Vina San Pedro",
quality: "Standard",
variantName: "1865 Chilean Wine",
vol02: "0",
vol07: "0",
vol08: "4.25",
vol09: "4.25",
vol10: "0"};
從此:
console.log(obj.id);//logs 1
console.log(obj.owner);//logs 'Vina San Pedro'
console.log(obj['brandName']);//string access: logs "1865 Chilean Wine"
//etc...
該代碼進行測試和工作
的數據看起來就像你的榜樣?這甚至幾乎沒有JSON格式! – Jamiec
沒錯,但我從來沒有說過這是JSON數據,我說我在審訊前返回JSON數據 - 上面的數據是在審訊之後。 – JasonMHirst
你可以顯示你的代碼「我可以遍歷上面的字符串,將值推入數組」? –