gpt4 book ai didi

javascript - 如何在 Javascript 中动态命名数组?

转载 作者:搜寻专家 更新时间:2023-11-01 05:26:46 24 4
gpt4 key购买 nike

我正在使用 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
});
});

我知道上面的代码是完全错误的,但它说明了这个想法。在声明“var data.cssid”的地方,我想使用 data.cssid 的实际值作为新数组的名称。

编辑:

我已经尝试过这里提到的方法(eval 除外)。代码如下,与我原来的帖子并没有什么不同,只是我使用的是对象构造函数。

$(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
});
});
});

非特定 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
}

感谢大家的意见。

最佳答案

你还想把数组放在data对象上吗?

data[data.cssid] = new Array();

否则,您可以将其分配给任何其他对象。将它分配给 window 对象,将使它全局可用

window[data.cssid] = new Array();

...那么如果 data.cssid 的值是 "abc" 那么你可以像这样访问它

abc[0] = data.productid;

关于javascript - 如何在 Javascript 中动态命名数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3292385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com