Estoy tratando de convertir los valores de una matriz dentro de un objeto en una matriz normal.
En este momento estoy haciendo algo como esto en mi función de éxito de AJAX:
var obj = data console.log(obj) var array = Object.keys(obj) .map(function(key) { return obj[key]; }); console.log(array)Esto es lo que obtengo en mi consola:
{jaar: Array(2)} jaar: Array(2) 0: YEAR(Scan): "2020" [[Prototype]]: Object 1: YEAR(Scan): "2021" [[Prototype]]: Object length: 2 [[Prototype]]: Array(0) [[Prototype]]: ObjectQuiero tener algo simplemente como esto.
["2020", "2021"]
¿Cómo puedo lograr esto y qué estoy haciendo mal en este momento?
console.log(obj) al principio da este resultado en la consola:
jaar: Array(2) 0: {YEAR(Scan): '2020'} 1: {YEAR(Scan): '2021'} length: 2 [[Prototype]]: Array(0) [[Prototype]]: Object ```Si tiene un objeto simple como const obj = { x: 10, y: 20 } y desea tener una matriz de sus valores, simplemente puede usar Object.values(obj) que le devolverá [10, 20] .
Parece que su objeto tiene una estructura más compleja.
Si está seguro de que cualquier valor de su objeto es un valor o una matriz, como const obj2 = { x: 10, y: [20, 30, 40], z: [50, 60]} , puede aplanarlo.
Object.values(obj2).flat() le devolverá [10, 20, 30, 40, 50, 60] .
Para estructuras más complejas, necesita tener controladores más complejos.
jaar ya es una matriz de objetos. Simplemente puede usar .map() y obtener el valor de propiedad respectivo de cada elemento de la matriz.
let ans =jaar.map(x => x['YEAR(Scan)']);Otra respuesta proporciona el código sucinto imprescindible (usando .map ): para realizar el cambio más pequeño en su código existente, cambie:
Puede leer la propiedad YEAR(Scan) así:
return obj[key]["YEAR(Scan)"];Código actualizado:
var obj = [ { "YEAR(Scan)":"2020" }, { "YEAR(Scan)":"2021" } ] console.log(obj) var array = Object.keys(obj) .map(function(key) { return obj[key]["YEAR(Scan)"]; }); console.log(array)