2016-05-13 3 views
2

Dies macht mich verrückt.dynamisch erstellen Sie ein Javascript/Jquery Multilevel-Array

Angenommen, ich habe dies:

var tags = ["art","wedding"]; 
var containers = ["artcon","weddingcon"]; 
var limits = [5,15]; 

Wie kann ich diese Art von Multi-Level-Array zu erstellen, wie diese Struktur?

var testarr = [ 
    "art" = [ 
     "container" = "artcon", 
     "limit" = 5, 
    ], 
    "wedding" = [ 
     "container" = "weddingcon", 
     "limit" = 15, 
    ] 
]; 

Mit freundlichen Grüßen.

+1

Es ein Objekt genannt - https://developer.mozilla.org/en-US/docs/Web/JavaScript/ Guide/Working_with_Objects – Adam

Antwort

4

können Sie Array#reduce verwenden und die Rück Objekt

var tags = ["art", "wedding"]; 
 
var containers = ["artcon", "weddingcon"]; 
 
var limits = [5, 15]; 
 

 
var result = tags.reduce((res, e, i) => { 
 
    res[e] = {container: containers[i], limit: limits[i]} 
 
    return res; 
 
}, {}) 
 

 
console.log(result)

+1

Ich bin immer verzaubert von der einfachen Schönheit von 'reduce' ... – morels

+0

das ist großartig. hatte keine Ahnung von reduzieren. Das produzierte genau das, was ich brauchte. – Ron

0
var testarr = { 
    "art": { 
     "container": "artcon", 
     "limit": 5, 
    }, 
    "wedding": { 
     "container": "weddingcon", 
     "limit": 15, 
    } 
}; 

Dies ist eine ziemlich einfache Modifikation von der Idee, die Sie hatten. Beachten Sie, dass wir in der Objektdeklaration immer : anstelle von = verwenden. Außerdem verwendet die Objektdeklaration geschweifte Klammern anstelle von eckigen Klammern.

Was können wir mit diesem Objekt tun? Wir können es durchlaufen, obwohl nicht ganz so zuverlässig wie wir ein Array können. Zum Beispiel können wir for (key in testarr) tun, und die Schleife wird zweimal ausgeführt, eine mit key ist "art", und eine davon ist "wedding". Es gibt einige Vorbehalte ... aber in so einem einfachen Anwendungsfall wird es dir wahrscheinlich gut gehen.

Bitte lassen Sie mich wissen, wenn Ihre Frage war, wie Sie diese drei Objekte über den Code in diese Objektstruktur konvertieren, denn gerade jetzt scheint es so, als ob Sie nur verstehen möchten, wie Objekte oder "Multilevel-Arrays" Arbeit in diesem Fall.

1

brauchen nur eine for Schleife

var tags = ["art","wedding"]; 
var containers = ["artcon","weddingcon"]; 
var limits = [5,15]; 
// 
var obj =[]; 
for(i in tags){ 
    obj[tags[i]]=[containers[i],limits[i]]; 
} 
console.log(obj); 
// 

Antwort:

[art: Array[2], wedding: Array[2]] 
art:Array[2] 
0:"artcon" 
1:5 
length:2 
wedding:Array[2] 
0:"weddingcon" 
1:15 
length:2 
0

var tags = ["art","wedding"]; 
 
var containers = ["artcon","weddingcon"]; 
 
var limits = [5,15]; 
 

 
testarr = new Array(); 
 
    
 
for(i in tags){ 
 
    var obj = {}; 
 
    obj[tags[i]] = { container: containers[i], limit: limits[i] }; 
 
    testarr.push(obj) 
 
} 
 

 
console.log(testarr); 
 
console.log(testarr[0]); 
 
console.log(testarr[1]);

Array Ergebnis:

[ 
    { "art": { 
       "container": "artcon", 
       "limit": 5, 
      } 
    }, 
    { "wedding": { 
        "container": "weddingcon", 
        "limit": 15, 
       } 
    } 
]; 

var tags = ["art","wedding"]; 
 
var containers = ["artcon","weddingcon"]; 
 
var limits = [5,15]; 
 

 
testarr = new Array(); 
 
    for(i in tags){ 
 
     testarr.push({tag: tags[i], container: containers[i], limit: limits[i] }) 
 
    } 
 

 
console.log(testarr); 
 
console.log(testarr[0]); 
 
console.log(testarr[1]);

Array Ergebnis:

[ 
    { "tag": "art", 
     "container": "artcon", 
     "limit": 5 
    }, 
    { "tag": "wedding", 
     "container": "weddingcon", 
     "limit": 15 
    } 
]; 
Verwandte Themen