¿Cómo puedo insertar un objeto en una matriz?

4 minutos de lectura

avatar de usuario de pmiranda
pmiranda

Sé que es simple, pero no lo entiendo.

tengo este codigo:

// My object
const nieto = {
  label: "Title",
  value: "Ramones" 
}

let nietos = [];
nietos.push(nieto.label);
nietos.push(nieto.value);

Si hago esto, obtendré una matriz simple:

["Title", "Ramones"]

Necesito crear lo siguiente:

[{"01":"Title", "02": "Ramones"}]

¿Cómo puedo usar push() para agregar el objeto en el nietos ¿formación?

  • "02": "Ramones" ¿Asumo? Además, en ese caso, ¿por qué la matriz? Parece que quieres construir un objeto simple.

    – El fantasma de Madara

    25/10/2016 a las 21:37


  • Editado, sí, lo siento. Usaré esa matriz con otra función para crear un archivo XML. Gran historia.

    – pmiranda

    25/10/2016 a las 21:41

  • Entonces, ¿la matriz siempre tendrá exactamente un elemento? ¿El objeto numerado?

    – El fantasma de Madara

    25/10/2016 a las 21:43

  • No, tendrá más objetos: nietos = [{“01″:”Band”, “02”: “Ramones”}, {“01″:”Style”, “02”: “RockPunk”}, {“01”: “”, “02”: “”, “03” : “Another String”}] diferentes objetos con diferentes longitudes.

    – pmiranda

    25/10/2016 a las 21:47

Tienes que crear un objeto. Asignar los valores al objeto. Luego empújelo en la matriz:

var nietos = [];
var obj = {};
obj["01"] = nieto.label;
obj["02"] = nieto.value;
nietos.push(obj);

  • ¿Por qué necesita usar “01” como clave? ¿Y si quisiera usar nieto.label como la clave?

    – Amón

    4 de febrero a las 18:22

  • @Amon Entonces tendrás obj[nieto.label] = nieto.valor;

    – kodfire

    22 de agosto a las 6:39

Avatar de usuario de U.Shaba
U.Shaba

Cree una matriz de objetos como este:

var nietos = [];
nietos.push({"01": nieto.label, "02": nieto.value});
return nietos;

Primero, crea el objeto dentro del método push y luego devuelve la matriz recién creada.

  • ¿Por qué necesita usar “01” como clave? ¿Qué pasa si quiero usar nieto.label como clave?

    – Amón

    4 de febrero a las 18:22

  • @Amon Sí, puede, siempre que ‘neito.label’ sea único, puede usarlo como clave. Pero de acuerdo con los requisitos de la pregunta, el objeto debía estar en ese formato.

    – U. Shaba

    7 de febrero a las 16:08

avatar de usuario de user889030
usuario889030

se puede hacer así también.

// our object array
let data_array = [];

// our object
let my_object = {}; 
   
// load data into object

my_object.name = "stack";
my_object.age = 20;
my_object.hair_color = "red";
my_object.eye_color = "green";
        
// push the object to Array
data_array.push(my_object);

Avatar de usuario de Gass
gases

Uso de la asignación de desestructuración (ES6)

const nieto = {label: 'title', value: 'ramones' } 
const modifiedObj = {01: nieto.label, 02: nieto.value}

let array = [
  {03: 'asd', 04: 'asd'}, 
  {05: 'asd', 06: 'asd'} 
]

// push the modified object to the first index of the array
array = [modifiedObj, ...array] 

console.log(array)

Si desea enviar el objeto modificado al último índice de la matriz, simplemente cambie la matriz desestructurada ...array al frente.

array = [...array, modifiedObj]

Avatar de usuario de Towkir
Towkir

Bien, ["Title", "Ramones"] es una matriz de cadenas. Pero [{"01":"Title", "02", "Ramones"}] es una matriz de objetos.

Si está dispuesto a insertar propiedades o valores en un objeto, debe acceder a ese objeto y luego insertar datos en él. Ejemplo:
nietos[indexNumber].yourProperty=yourValue; en aplicación real:

nietos[0].02 = "Ramones";

Si su matriz de objetos ya está vacía, asegúrese de que tenga al menos un objeto, o ese objeto en el que va a enviar datos.

Digamos que nuestra matriz es myArray[], por lo que ahora es una matriz vacía, el motor JS no sabe qué tipo de datos tiene, ni cadena, ni objeto, ni número, nada. Entonces, vamos a insertar un objeto (tal vez un objeto vacío) en esa matriz. myArray.push({})o myArray.push({""}).

Esto empujará un objeto vacío en myArray que tendrá un número de índice 0por lo que su objeto exacto es ahora myArray[0]

entonces empuja property y value en eso como esto:

myArray[0].property = value;
//in your case:
myArray[0]["01"] = "value";

  • Recibí este error: Error de análisis: Línea 59: Número inesperado al analizar el archivo. Esa línea es: nietos[0].02 = valor;

    – pmiranda

    25/10/2016 a las 21:55

  • probar nietos[0]["02"] = "Ramones"; o nietos[0][02] = "Ramones";

    – Towkir

    25/10/2016 a las 21:56

  • No. Recibí este error “No se puede establecer la propiedad ‘0’ de indefinido”. El código es: var nietos = []; nietos[0][2] = valor;

    – pmiranda

    26/10/2016 a las 12:56

  • La respuesta de @pmirnd está actualizada, verifique la última mitad de la respuesta 🙂

    – Towkir

    26/10/2016 a las 16:25

Avatar de usuario de Legotin
Legotin

No estoy muy seguro, pero puedes probar algunos como este:

var pack = function( arr ) {
    var length = arr.length,
        result = {},
        i;

    for ( i = 0; i < length; i++ ) {
        result[ ( i < 10 ? '0' : '' ) + ( i + 1 ) ] = arr[ i ];
    }

    return result;
};

pack( [ 'one', 'two', 'three' ] ); //{01: "one", 02: "two", 03: "three"}

  • Recibí este error: Error de análisis: Línea 59: Número inesperado al analizar el archivo. Esa línea es: nietos[0].02 = valor;

    – pmiranda

    25/10/2016 a las 21:55

  • probar nietos[0]["02"] = "Ramones"; o nietos[0][02] = "Ramones";

    – Towkir

    25/10/2016 a las 21:56

  • No. Recibí este error “No se puede establecer la propiedad ‘0’ de indefinido”. El código es: var nietos = []; nietos[0][2] = valor;

    – pmiranda

    26/10/2016 a las 12:56

  • La respuesta de @pmirnd está actualizada, verifique la última mitad de la respuesta 🙂

    – Towkir

    26/10/2016 a las 16:25

La siguiente solución es más sencilla. Todo lo que tiene que hacer es definir una función simple que pueda “CREAR” el objeto a partir de los dos elementos dados. Luego, simplemente aplique esta función a DOS matrices que tengan elementos para los que desea crear objetos y guardarlos en resultArray.

var arr1 = ['01','02','03'];
var arr2 = ['item-1','item-2','item-3'];
resultArray = [];
    for (var j=0; j<arr1.length; j++) {
        resultArray[j] = new makeArray(arr1[j], arr2[j]);
    }
function makeArray(first,second) {
    this.first = first;
    this.second = second;
}

¿Ha sido útil esta solución?