JavaScript:推送到具有未知键名的数组

标签 javascript

我有一个返回 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/

相关文章:

javascript - 获取 jquery ajax 响应中的父函数名称

javascript - 如何在 Hapi.js 中正确注册插件

javascript - 当另一个元素属性更改时更新元素的文本

javascript - 在 jQuery 中从 DOM 元素的数据属性创建多级数组

javascript - 如何在 Angular 4 中聚焦和导航 li 元素?

javascript - 使用 datatable.js 的具有固定标题和固定列的数据表

javascript - 如何通过单击另一个按钮使按钮可见?

php - 如何在 JavaScript 中访问 session ?

javascript - 在悬停时 : higlight all identical links to Wikipedia in one colour, 以不同颜色突出显示其他地方的所有相同链接

javascript - 移动浏览器。 iframe 内部表单突然移动