jQuery와 JSON을 사용하여 데이터베이스에서 데이터를 가져옵니다. 데이터베이스의 각 행은 다른 제품이며 각 제품에는 연관된 많은 특성이 있습니다.동적으로 배열의 이름을 자바 스크립트로 지정할 수 있습니까?
js에서 수행하려는 작업은 모든 제품 속성을 포함하는 각 제품에 대해 명명 된 배열을 만드는 것입니다. JSON에서 데이터를 가져 오는 방법을 알고 있습니다. Array를 생성하는 방법을 알고 있습니다.
내가 모르는 부분은 배열 이름을 동적으로 만드는 방법입니다. 누군가 나를 도울 수 있습니까?
데이터베이스의 필드를 기반으로 배열의 이름을 지정하려고합니다. 기존 스크립트와 작업 스크립트의 구조에서는 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의 실제 값을 새 배열의 이름으로 사용하려고합니다.
편집 : 나는 (평가 제외) 여기에 언급 된 방법을 시도했습니다
. 아래 코드는 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
});
});
});
비정상적인 obj [arrayName]에 대한 경고가 작동하며 모든 멋진 모습의 배열을 보여줍니다. 하지만 alert (obj.shoe)라는 이름으로 특정 배열에 액세스하려고하면 arrayName = shoe 일 때만 작동합니다. 다음 반복에서는 실패하고이 함수 밖에서는 액세스 할 수 없습니다.
이 내용을 통해 문제를 명확히하고 해결하는 데 도움이되기를 바랍니다. 나는 정말로 모든 의견을 주셔서 감사하며 여러분이 제안하는 모든 것을 시도하고 있습니다.
PROGRESS (솔루션) : 귀하의 의견 모두에게
$(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
}
감사합니다.
왜? 변수로 무엇을하고 싶습니까? – SLaks
당신은'eval'을 사용할 수 있습니다,하지만 아마 좋은 생각이 아니기 때문에 나는 대답으로 두지 않을 것입니다. 예 : 'eval ('var'+ data.cssid + '= new Array()'); ' –
다른 스크립트에서 각 제품의 속성을 사용하려고합니다. 원래 JSON에서 필요한 html이 출력되도록이 코드를 작성했습니다. 이제는 더 유연하게 만들 필요가 있다고 생각하고 배열을 먼저 생성 한 다음 배열에 액세스하여 html과 수식을 구성하는 것이 올바른 방법 일 것이라고 생각했습니다. 그래서 "신발"제품의 HTML을 만들 때 배열에 액세스하여 스크립트에 변수를 연결합니다. –