Duf*_*lan 4 javascript arrays jquery
我使用jQuery和JSON从数据库中提取数据.数据库的每一行都是不同的产品,每个产品都有许多与之关联的属性.
我在js中尝试做的是为包含所有产品属性的每个产品创建一个命名数组.我知道如何从JSON中提取数据.我知道如何构造数组.
我不知道的是如何动态创建数组名称.有人可以帮我吗?
我试图根据数据库中的字段命名数组.在我现有和工作脚本的结构中,它被引用为data.cssid.我想使用data.cssid的值作为数组的名称,然后填充数组.
$.getJSON("products.php",function(data){
$.each(data.products, function(i,data){
var data.cssid = new Array();
data.cssid[0] = data.productid;
...
etc
});
});
Run Code Online (Sandbox Code Playgroud)
我知道上面的代码是完全错误的,但它说明了这个想法.在我声明"var data.cssid"的地方,我想使用data.cssid的实际值作为新数组的名称.
编辑:
我已经尝试过这里提到的方法(除了eval).代码在下面并且与我的原始帖子没有什么不同,除了我正在使用Object构造函数.
$(document).ready(function(){
$.getJSON("productscript.php",function(data){
$.each(data.products, function(i,data){
var arrayName = data.cssid;
obj[arrayName] = new Array();
obj[arrayName][0] = data.productid;
obj[arrayName][1] = data.productname;
obj[arrayName][2] = data.cssid;
obj[arrayName][3] = data.benefits;
alert(obj[arrayName]); //WORKS
alert(obj.shoe); //WORKS WHEN arrayName = shoe, otherwise undefined
});
});
});
Run Code Online (Sandbox Code Playgroud)
非特定obj [arrayName]的警报工作并显示数组的所有辉煌.但是,当我尝试通过名称alert(obj.shoe)访问特定数组时,它仅在arrayName = shoe时有效.下一次迭代失败,无法在此函数之外访问它.
我希望这有助于澄清问题以及如何解决问题.我真的很感激所有的输入,我正在尝试你们建议的一切.
进展(解决方案):
$(document).ready(function(){
$.getJSON("productscript.php",function(data){
$.each(data.products, function(i,data){
var arrayName = data.cssid;
window[arrayName] = new Array();
var arr = window[data.cssid];
arr[0] = data.productid;
arr[1] = data.productname;
arr[2] = data.cssid;
arr[3] = data.benefits;
alert(window[arrayName]); //WORKS
alert(arrayName); //WORKS
alert(shoe); //WORKS
});
});
});
function showAlert() {
alert(shoe); //WORKS when activated by button click
}
Run Code Online (Sandbox Code Playgroud)
感谢大家的投入.
你还想让数组在data对象上吗?
data[data.cssid] = new Array();
Run Code Online (Sandbox Code Playgroud)
否则,您可以将其分配给任何其他对象.将其分配给window对象,将使其全局可用
window[data.cssid] = new Array();
Run Code Online (Sandbox Code Playgroud)
......那么,如果值data.cssid是"abc",那么你可以像这样访问
abc[0] = data.productid;
Run Code Online (Sandbox Code Playgroud)