Originariamente inviato da Kreatore
Ti ringrazio.
Io però ho specificato si trattava di Jquery.
Non penso possa definire la variabile $ in quando il tutto è all'interno di una funzione:
Non importa se parliamo di jquery, mootools o qualche altra libreria dato che il punto è come accedere ad un object. Ho definito $ a oggetto vuoto per semplicità. Inoltre, se dai uno sguardo più attento, stiamo utilizzando la proprietà "Valori" di $, quindi possiamo anche disinteressarci di $ in se per se. Nel nostro primo esempio non faceva differenza se esso era object o function.
codice:
(function($) {
$.Valori = {
primo:{
'a':'lettera A',
'b': 'lettera B',
'c':'lettera C'
}
secondo:{
a: [ '1a', '1b','1c' ],
b: [ '2a', '2b','2c' ],
c: [ '3a', '3b','3c' ]
}
$.fn.extend({
forletter: function(settings) {
this.defaults = {
lettere = ["a","b","c"]
}
var settings = $.extend(this.defaults, settings);
var lettere= settings.lettere;
for (var i in lettere) {
var let= $.Valori.secondo[lettere[i]];
alert ( let[0]);
}
}
});
Probabilmente è perchè non riesco ad accedere a Textile con degli indici numerici:
$.Valori.secondo[1] che dovrebbe ottenere come valore
b: [ '2a', '2b','2c' ], in realtà risulta
undefined mentre se provo con
$.Valori.secondo['b'] ottendo il corretto valore.
$.Valori.secondo è un object. Come dicevo nel primo post puoi vederlo come un array associativo. Il set delle chiavi di "secondo" è {a, b, c}. il valore "1" non fa parte delle chiavi della mappa quindi il valore associato a "1" è undefined. L'accesso agli array associativi in generale non è posizionale ma per chiave.
Codice PHP:
var x = { a : "ciao", "b" : "hello", 1 : "salut" };
console.log(x[1]); // salut
console.log(x[0]); // undefined
Allo stesso modo, se accedo con $.Valori.secondo.b ottendo il risultato ma se accedo con $.Valori.secondo.tags[i] mi ritrovo con un undefined.
Quindi probabilmente sbaglio ad accedere.
$.Valori.secondo.b e $.Valori.secondo["b"] sono equivalenti quindi ottieni lo stesso comportamento che hai descritto più su.
Ricapitolando, se ho un oggetto fatto così
Codice PHP:
$.Valori = {
primo:{
'a':'lettera A',
'b': 'lettera B',
'c':'lettera C'
},
secondo:{
a: [ '1a', '1b','1c' ],
b: [ '2a', '2b','2c' ],
c: [ '3a', '3b','3c' ]
}
};
e voglio ottenere il valore "2b", faccio
Codice PHP:
$.Valori.secondo.b[1]
che, seguendo gli accessi step by step, vuol dire
codice:
$ - faccio riferimento all'object "4"
$.Valori - faccio riferimento alla proprietà "Valori" di "$", che è un object
$.Valori.secondo - faccio riferimento alla proprietà "secondo" di "$.Valori", che è un object
$.Valori.secondo.b - faccio riferimento alla proprietà "b" di "$.Valori.secondo", che è un array
$.Valori.secondo.b[1] - accedo all'indice 1 dell'array "$.Valori.secondo.b[1]"