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?
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
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
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);
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]
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 0
por 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";
onietos[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
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";
onietos[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;
}
"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