第一关:你是不是在找一个数组,而是一个对象。 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
你可以显示你的代码“我可以遍历上面的字符串,将值推入数组”? –