El siguiente código proviene de jQuery UI Autocompletar:
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" } ];Por ejemplo, quiero cambiar el valor desc de jquery-ui . ¿Cómo puedo hacer eso?
Además, ¿hay una forma más rápida de obtener los datos? Me refiero a darle un nombre al objeto para obtener sus datos, ¿al igual que el objeto dentro de una matriz? Entonces sería algo como jquery-ui.jquery-ui.desc = ....
es bastante simple
findIndex .yourArray[indexThatyouFind] //Initailize array of objects. let myArray = [ {id: 0, name: "Jhon"}, {id: 1, name: "Sara"}, {id: 2, name: "Domnic"}, {id: 3, name: "Bravo"} ], //Find index of specific object using findIndex method. objIndex = myArray.findIndex((obj => obj.id == 1)); //Log object to Console. console.log("Before update: ", myArray[objIndex]) //Update object's name property. myArray[objIndex].name = "Laila" //Log object to console again. console.log("After update: ", myArray[objIndex])Tienes que buscar en la matriz como:
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! } } }y usarlo como
var projects = [ ... ]; changeDesc ( 'jquery-ui', 'new description' );ACTUALIZAR:
Para conseguirlo más rápido:
var projects = { jqueryUi : { value: 'lol1', desc: 'lol2' } }; projects.jqueryUi.desc = 'new string';(De acuerdo con el comentario de Frédéric, no debe usar un guión en la clave del objeto, o debe usar la notación "jquery-ui" y projects["jquery-ui"]).
La mejor solución, gracias a ES6.
Esto devuelve una nueva matriz con una descripción reemplazada para el objeto que contiene un valor igual a "jquery-ui".
const newProjects = projects.map(p => p.value === 'jquery-ui' ? { ...p, desc: 'new description' } : p );