Actualmente estoy tratando con un servicio web que está devolviendo una serie de cadenas al cliente. A partir de aquí, me gustaría tomar esta matriz de cadenas y convertirla en un objeto que le dé un nombre a cada cadena para poder consultarla más adelante.

Entonces comience con esto:

var result = ["test", "hello", "goodbye"];

Y me gustaría terminar con esto:

var final = [{'value': "test"}, {'value': "hello"}, {'value': "goodbye"}];

Yo uso jquery. ¿Hay alguna manera de lograr esto?

3
Collin Estes 20 may. 2011 a las 20:02

4 respuestas

La mejor respuesta
var final = $.map(result, function(val) {
    return { value: val };
});

Alternativamente, puede usar la alternativa ES5

var final result.map(function(val) {
    return { value: val };
});

O una simple iteración.

var final = [];
for (var i = 0, ii = result.length; i < ii; i++) {
    final.push({ value: result[i] });
}
7
Raynos 20 may. 2011 a las 16:06

Podrías hacer algo como lo siguiente:

var input = ["one", "two", "three"], 
    output = [],
    obj;

for (var i = 0; i < input.length; i++)
{
    obj = { "value" : input[i] };

    output.push(obj);

}

Enlace al fiddle

2
Mike Fielden 20 may. 2011 a las 16:07

No creo que jQuery deba usarse aquí.

var result = ["test", "hello", "goodbye"];
var final = [];
for(var i = 0; i < result.length; i++) {
    final.push({value: result[i]})
}
4
pimvdb 20 may. 2011 a las 16:05

No he probado esto pero puedes hacer algo como

$(result).map(function(){return {'value':this}});

2
Amir Raminfar 20 may. 2011 a las 16:04