El siguiente código proviene de 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"
}
];
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? Quiero decir, ¿darle al objeto un nombre para obtener sus datos, al igual que el objeto dentro de una matriz? Entonces sería algo comojquery-ui.jquery-ui.desc = ....
javascript
jquery
arrays
qinHaiXiang
fuente
fuente
projects["jquery-ui"].desc
. ¿Valdría la pena el esfuerzo solo para obtener una sintaxis más agradable?Respuestas:
Tienes que buscar en la matriz como:
y úsalo como
ACTUALIZAR:
Para hacerlo más rápido:
(De acuerdo con el comentario de Frédéric, no debe usar guiones en la clave de objeto, o debe usar la notación "jquery-ui" y proyectos ["jquery-ui"]).
fuente
-
en el nombre del objeto. Tendrías que escribir"jquery-ui": {}
yprojects["jquery-ui"].desc
respectivamente.Es bastante simple
findIndex
método.yourArray[indexThatyouFind]
fuente
()
en elfindIndex
método?[...myArray.slice(0, objIndex), Object.assign({}, myArray[objIndex], myArray.slice(objIndex + 1))]
[...myArray.slice(0, objIndex), Object.assign({}, myArray[objIndex], ...myArray.slice(objIndex + 1))]
? Creo que te faltan las segundas elipses.Manera ES6 , sin mutar los datos originales.
fuente
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".
fuente
Puede usar $ .each () para iterar sobre la matriz y ubicar el objeto que le interesa:
fuente
Usar map es la mejor solución sin usar bibliotecas adicionales. (Usando ES6)
fuente
Se puede lograr fácilmente con la biblioteca de subrayado / lodash:
Documentos:
https://lodash.com/docs#find
https://lodash.com/docs#merge
fuente
.value()
puedes usar .find así en tu ejemplo
fuente
necesita saber el índice del objeto que está cambiando. entonces es bastante simple
fuente
Creo que así es mejor
fuente
findIndex
eres la asignación de un valor en vez de comparardados los siguientes datos, queremos reemplazar las bayas en la
summerFruits
lista con sandía .Dos formas de hacer esto.
Primer enfoque:
Segundo enfoque: usar
map
, yspread
:summerFruitsCopy
La lista ahora devolverá una matriz con un objeto actualizado.fuente
fuente
...
antes de que los proyectos sean necesarios?...
se conoce como el operador de propagación. google it :)Esta es otra respuesta que involucra
find
. Esto se basa en el hecho de quefind
:Aquí está el fragmento crítico de Javascript:
Aquí hay una versión alternativa del mismo Javascript:
Aquí hay una versión aún más corta (y algo más malvada):
Aquí hay una versión de trabajo completa:
fuente
Puedes usar la función de mapa -
fuente
Prueba este código. utiliza la función jQuery grep
fuente
También podemos usar la función de mapa de Array para modificar el objeto de una matriz usando Javascript.
fuente
Encuentra el índice primero:
Luego:
Luego haz lo que quieras con este índice, como:
$ scope [returnindex] .someKey = "someValue";
Nota: no use for, ya que for verificará todos los documentos de la matriz, use mientras que con un tope, por lo que se detendrá una vez que se encuentre, por lo tanto, un código más rápido.
fuente
Aquí estoy usando angular js. En javascript puedes usar for loop para encontrar.
fuente
para actualizar varios elementos con las coincidencias use:
fuente
Esta es mi respuesta al problema. Mi versión de subrayado fue 1.7, por lo tanto, no pude usar
.findIndex
.Así que obtuve manualmente el índice del artículo y lo reemplacé. Aquí está el código para el mismo.
El siguiente método reemplazará al alumno
id:4
con más atributos en el objeto}
Con el subrayado 1.8 se simplificará ya que tenemos métodos
_.findIndexOf
.fuente
Permitir que desee actualizar el valor de
array[2] = "data"
fuente
fuente