我有一个对象文字或具有数据的json文件,我想要的是在数组中包装SMBPremium和最大数据,以便我可以通过访问其索引来定位。如何将我的对象文字修改为数组,以便我可以针对SmbPremium and Max。有这样的人。
productMap['TEC0'][1].productName;
这是我的JSON
var productMap = {
"TEC0": {
"SMBPremium" : {
"productName": "Wilson",
"panelClass": "WilsonClass",
"fullinfoClass": "Wilsonfull",
"productPageLink": "",
"panelPageLinkGA": "",
"fullPageLinkGA": "",
"notifLinkDanger" : {
"linkPrimary" : "",
"linkSecondary" : ""
},
"notifLinkRed" : {
"linkPrimary" : "",
"linkSecondary" : ""
},
"notifLinkInfo" : "",
"notifLinkWarning" : "",
"notifLinkSuccess" : ""
},
"MAX": {
"productName": "Spalding",
"panelClass": "spalding",
"fullinfoClass": "spalding",
"productPageLink": "",
"panelPageLinkGA": "",
"fullPageLinkGA": "",
"notifLinkDanger" : {
"linkPrimary" : "",
"linkSecondary" : ""
},
"notifLinkRed" : {
"linkPrimary" : "",
"linkSecondary" : ""
},
"notifLinkInfo" : "",
"notifLinkWarning" : "",
"notifLinkSuccess" : ""
}
}
};
带有 array.map :
的tranformproductMap2 = {};
productMap2.TEC0 = Object.keys(productMap['TEC0']).map(key => productMap['TEC0'][key]);
然后,您可以访问每个元素的productName 属性:
productMap2.TEC0[1].productName
您可以按照自己的意愿重新创建对象的productmap:
// Every object is a map:
var tec0 = productMap['TEC0'];
var keys = Object.keys(tec0);
var array = [];
for(var i=0; i<keys.length; i++) {
var key = keys[i];
var value = tec0[key];
array.push(value);
}
var newProductMap = {'TEC0': array};
alert(newProductMap['TEC0'][1].productName);
注意:Faly的答案更加优雅。只需在浏览器兼容箭头功能时小心(即不支持)。
Ammar答案的同上,IE不支持。
使用object.values()方法:
productMap["TEC0"] = Object.values(productMap["TEC0"]);
尝试此
index = 1
productMap['TEC0'][Object.keys(productMap['TEC0'])[index]].productName;
说明
productmap ['tec0']是json对象
object.keys(productmap ['tec0']) - 将返回json对象键作为数组。在这样的示例中
object.keys(productmap ['tec0'])[index] - 将返回基于密钥名称
在索引上传递。productmap ['tec0'] [key_name] - 将基于json对象
key_name从以前的状态获得。
您可以将项目映射到通缉键数组的索引。
var productMap = { TEC0: { SMBPremium: { productName: "Wilson", panelClass: "WilsonClass", fullinfoClass: "Wilsonfull", productPageLink: "", panelPageLinkGA: "", fullPageLinkGA: "", notifLinkDanger: { linkPrimary: "", linkSecondary: "" }, notifLinkRed: { linkPrimary: "", linkSecondary: "" }, notifLinkInfo: "", notifLinkWarning: "", notifLinkSuccess: "" }, MAX: { productName: "Spalding", panelClass: "spalding", fullinfoClass: "spalding", productPageLink: "", panelPageLinkGA: "", fullPageLinkGA: "", notifLinkDanger: { linkPrimary: "", linkSecondary: "" }, notifLinkRed: { linkPrimary: "", linkSecondary: "" }, notifLinkInfo: "", notifLinkWarning: "", notifLinkSuccess: "" } } },
keys = ['SMBPremium', 'MAX'];
keys.forEach((k, i) => productMap.TEC0[i] = productMap.TEC0[k]);
console.log(productMap['TEC0'][0].productName);