我正在尝试使用纯java脚本在第一个下拉列表(产品)中选择一个选项来填充下拉列表。但是在将相应的文件映射到产品方面受到了打击,特别是当不同产品的相同版本号重复时
以下是数据集。
productA => version1.0.0 => FileA1.zip
productA => version1.0.1 => FileA2.zip
productB => version3.5.0 => FileB1.zip
productB => version4.0.1 => FileB2.zip
productC => version1.0.0 => FileC1.zip
productC => version1.0.1 => FileC2.zip
我的javascript数组
var ProductNameMap = {
"ProductA":["1.0.0","1.0.1"],
"ProductB":["3.5.0","4.0.1"],
"ProductC":["1.0.0","1.0.1"],
};
//want to map files specifically associated with particular product
var ProductSeriesMap = {
"version1.0.0":["FileA1.zip"],
"version1.0.1":["FileA2.zip"]
};
如何在此映射过程中区分ProductA => version1.0.0
和ProductC => version1.0.0
?
我的HTML
<html>
<body>
Product:
<select id="product" onchange="changeproduct">
<option>--Choose Product--</option>
</select><br/>
Version:<select id="version" onchange="changeversion" ></select><br/>
File:<select id="file"></select>
<script>
//have my java script here to populate dropdowns
</script>
答案 0 :(得分:3)
将它全部放在一个结构中
var ProductsMap = {
"ProductA":{"1.0.0":"File1-a1.zip","1.0.1":"File-a2.zip"},
"ProductC":{"1.0.0":"File-c1.zip","1.0.1":"File-c2.zip"},
};
当用户选择ProductA时,您拥有所有版本和相关文件
ProductsMap.ProductA
当用户选择ProductC时,您拥有所有版本和相关文件
ProductsMap.ProductC
答案 1 :(得分:1)
var ProductSeriesMap={
"ProductA": new Map{"version1.0.0":["FileA1.zip"],"version1.0.1":["FileA2.zip"]},
"ProductB": new Map{"version1.0.0":["FileA1.zip"],"version1.0.1":["FileA2.zip"]},
}
你需要像这样创作;
Map[key,Map[key,value]];
答案 2 :(得分:1)
我认为稍微改变一下你的物体会有所帮助。您可以使用for循环迭代此结构(如果目标浏览器支持,则使用Object.keys(products)
)。只需调整即可满足您的确切需求。
var products = {
"A": [
{ "1.0.0": "FileA1.zip" },
{ "1.0.1": "FileA2.zip" }
],
"B": [
{ "3.5.0": "FileB1.zip" },
{ "4.0.1": "FileB2.zip" }
],
"C": [
{ "1.0.0": "FileC1.zip" },
{ "1.0.1": "FileC2.zip" }
]
}
答案 3 :(得分:0)
您的数组实际上是对象。我不明白为什么你没有直接在数据集中的javascript对象中将所有东西映射到一起,因为你的第二个“数组”确实会丢失所有产品痕迹,这些产品无法检索到有一个标准的结构。
您的Javascript对象结构可能类似于:
var ProductNameMap = {
"ProductA":[{"version":"1.0.0","fileName":"FileA1.zip"},{"version":"1.0.1","fileName":"FileA2.zip"}],
"ProductB":[{"version":"3.5.0","fileName":"FileB1.zip"},{"version":"4.0.1","fileName":"FileB2.zip"}],
"ProductC":[{"version":"1.0.0","fileName":"FileC1.zip"},{"version":"1.0.1","fileName":"FileC2.zip"}]
};
根据您的需要,其他结构是可能的,但没有上下文,很难指出一个是最好的...基本上如果您需要订购集合(如版本的继承),您将需要使用数组和订单无关紧要的集合,对象很好。