我在数组中有一个对象文字,我正在尝试访问密钥:名称和价格。
这是我的目标:
var ProductList = [
{ "1": { Name: "Item name", Price: "0.99" } },
{ "2": { Name: "Item name", Price: "0.99" } },
{ "3": { Name: "Item name", Price: "8.99" } },
{ "4": { Name: "Item name", Price: "8.99" } }
];
数字1,2,3,4是产品商品ID,所以我试图这样做:
console.log(ProductList[1].Name);
但它似乎没有起作用。
谢谢, 标记
答案 0 :(得分:3)
试试这个:因为你将哈希存储在一个数组中。看来,我可能错了,你想根据你的产品ID访问数组elem位置 - 1。如果您的身份证有所不同,即.. 123,587,ABC987,则以下内容无法使用。
var ProductList = [
{"1": {Name: "Item name", Price: "0.99"}},
{"2": {Name: "Item name", Price: "0.99"}},
{"3": {Name: "Item name", Price: "8.99"}},
{"4": {Name: "Item name", Price: "8.99"}}
];
var prodRef = 1; // in this example
ProductList[prodRef - 1][prodRef].Name;
在设置对象时,我会亲自执行以下操作。
var ProductList = {
"1": {Name: "Item name", Price: "0.99"},
"2": {Name: "Item name", Price: "0.99"},
"3": {Name: "Item name", Price: "8.99"},
"4": {Name: "Item name", Price: "8.99"}
};
// so, you can just always access it via your productID.
var prodRef = 4;
ProductList[prodRef].Name
答案 1 :(得分:2)
我建议修改数组中的对象以包含ID
属性。使用此属性,您可以使用数组上的filter
方法按ID
属性查找元素。
var ProductList = [
{ID: "11", Name: "Item name", Price: "0.99"},
{ID: "22", Name: "Item name", Price: "0.99"},
{ID: "33", Name: "Item name", Price: "8.99"},
{ID: "44", Name: "Item name", Price: "8.99"}
];
function findById(arr, id){
var results = arr.filter(function(e){
return e.ID == id;
});
return (results.length) ? results[0]:undefined;
}
如果您必须坚持使用原始阵列,则可以应用以下内容。
您必须使用与数组中每个对象关联的属性名称来访问该对象:
console.log(ProductList[1]["2"].Name);
如果你不能改变这些对象的结构,我会做一个辅助函数:
var ProductList = [
{"1": {Name: "Item name", Price: "0.99"}},
{"2": {Name: "Item name", Price: "0.19"}},
{"3": {Name: "Item name", Price: "8.99"}},
{"4": {Name: "Item name", Price: "8.99"}}
];
function getInternal(arr, index){
return arr[index][index+1];
}
var obj = getInternal(ProductList, 1);
console.log(obj.Name);
JS小提琴: http://jsfiddle.net/68WDZ/
答案 2 :(得分:1)
我认为你可能正在寻找一个Object而不是一个数组。
var productList = {
"1": { name: "Millenium Falcon", price: 20 },
"2": { name: "Storm Troopers", price: 5.99 },
...
}
console.log(productList["1"].name == "Millenium Falcon");
console.log(productList["2"].price == 5.99);
当然,如果您无法更改所获得的数据,则必须使用productList [0] [“1”]。名称