用Google搜索过去几个小时,但在没有编写任何函数或使用map()
的情况下找不到这样做的方法。
我试图通过搜索前两个键来找到在以下对象结构中获取price
值的最简单方法。
var itemPrices = {
'1': { '1': 1000 },
'1': { '2': 1000 },
'1': { '3': 1100 },
'2': { '1': 900 },
'2': { '2': 900 },
'3': { '4': 2200 },
'3': { '5': 700 },
'4': { '1': 1200 },
'4': { '2': 1200 },
};
console.log(itemPrices['1']['1']); // Returns undefined because it's overwritten by `['1']['3']`.
我正在使用PHP生成此对象:
echo " var itemPrices = {\n";
foreach($_SESSION['item_prices'] as $item_price) {
$category_id = $item_price['categoryid'];
$type_id = $item_price['typeid'];
$price = $item_price['price'];
echo " '$category_id': { '$type_id': $price },\n";
}
echo " };\n";
请帮忙。
答案 0 :(得分:1)
您需要使用正确的JavaScript对象。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects
var itemPrices = {
'1': {
'1': 1000,
'2': 1000,
'3': 1100
},
'2': {
'1': 900,
'2': 900
},
'3': {
'4': 2200,
'5': 700
},
'4': {
'1': 1200,
'2': 1200
},
};
应该允许你这样做
console.log(itemPrices['1']['1']);
您还需要调整一下PHP脚本以使其正确输出!
JSFiddle:https://jsfiddle.net/f8kbca3h/
答案 1 :(得分:0)
你不想拥有这种结构吗?:
for {
b ← a.map(list ⇒ list.grouped( 2 ).toList)
res ← Future.sequence(b.map(f))
} yield res
你可以达到同样的目的:
var itemPrices = {
1: {
1: 1000,
2: 2000,
3: 3000
},
2: {
1: 1000,
2: 2000
}
}
答案 2 :(得分:0)
$data = array();
foreach($_SESSION['item_prices'] as $item_price) {
$category_id = $item_price['categoryid'];
$type_id = $item_price['typeid'];
$price = $item_price['price'];
if (!isset($data[$category_id]))
{
$data[$category_id] = array();
}
$data[$category_id][$type_id] = $price;
}
echo " var itemPrices = ".json_encode($data).";\n";