Jak změnit hodnotu objektu, který je uvnitř pole pomocí JavaScriptu nebo jQuery?

Níže uvedený kód pochází z jQuery UI Autocomplete:

var projects = [
    {
        value: "jquery",
        label: "jQuery",
        desc: "the write less, do more, JavaScript library",
        icon: "jquery_32x32.png"
    },
    {
        value: "jquery-ui",
        label: "jQuery UI",
        desc: "the official user interface library for jQuery",
        icon: "jqueryui_32x32.png"
    },
    {
        value: "sizzlejs",
        label: "Sizzle JS",
        desc: "a pure-JavaScript CSS selector engine",
        icon: "sizzlejs_32x32.png"
    }
];

Chci například změnit hodnotu desc jquery-ui . Jak to mohu udělat?

Navíc, existuje rychlejší způsob, jak získat data? Myslím tím, že pojmenujte objekt, aby načetl data, stejně jako objekt uvnitř pole? Takže by to bylo něco jako jquery-ui.jquery-ui.desc = ....

Odpověď

Musíte hledat v poli jako:

function changeDesc( value, desc ) {
   for (var i in projects) {
     if (projects[i].value == value) {
        projects[i].desc = desc;
        break; //Stop this loop, we found it!
     }
   }
}

a použijte jej jako

var projects = [ ... ];
changeDesc ( 'jquery-ui', 'new description' );

AKTUALIZACE:

Chcete-li to získat rychleji:

var projects = {
   jqueryUi : {
      value:  'lol1',
      desc:   'lol2'
   }
};

projects.jqueryUi.desc = 'new string';

(V souladu s Frédéricovým komentářem byste neměli v klíči objektu používat spojovník, nebo byste měli použít zápis „jquery-ui“ a project[“jquery-ui“].)