我有一个返回 JSON 的小程序,然后我在将其插入数组之前对其进行查询。
数据示例如下:
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 中的字段名称“命名”数组中的键,考虑到诸如“Vol02”、“Vol07”之类的项目可能标记为“val02”、“val07”或“minorRegionName”,在某些情况下可以用“majorRegionName”标记。
编辑
var finalSplit = brandDataRow.split('|');
$.each(finalSplit, function (x, y) {
var v = y.split('=');
$.each(v, function (m, n) {
formattedBrandData.push({ m: m }, { n: n });
});
});
在上面的例子中,如果我的 |分隔符字符串包含“Owner=??????|Value=?????????|Brand=????????”然后,当我将其插入数组时,我希望键为“所有者”、“值(value)”和“品牌”。
但是,直到返回数据后我才知道键名,所以有时 |分隔字符串可以是“Owner=??????|Line=????????|Region=???????”
最佳答案
试试这个:
var data = "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 keyVal = data.split("|");
var res = {};
for(var i =0; i< keyVal.length; i++) {
var tmp = keyVal[i].split("=")
res[tmp[0]] = tmp[1];
}
console.log(res);
是的,它会返回一个对象,但数组只能包含数字索引。在大多数情况下,您可以像处理数组一样处理对象。此外,没有理由使用 $.each 来完成这样一个简单的任务。只是要执行的额外代码。
JSFiddle demo - 查看控制台输出
关于JavaScript:推送到具有未知键名的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12581387/