Saltar al contenido

¿Cómo puedo cortar un objeto en Javascript?

Nuestros mejores programadores han agotado sus provisiones de café, investigando noche y día por la resolución, hasta que Isabella halló la respuesta en GitHub y hoy la compartimos con nosotros.

Solución:

Nadie mencionó Object.entries() todavía, que podría ser la forma más flexible de hacerlo. Este método utiliza el mismo orden que for..in al enumerar propiedades, es decir, el orden en que las propiedades se ingresaron originalmente en el objeto. También obtiene subarreglos con propiedad y valor para que pueda usar cualquiera o ambos. Finalmente, no tiene que preocuparse de que las propiedades sean numéricas o establecer una propiedad de longitud adicional (como lo hace cuando usa Array.prototype.slice.call()).
Aquí hay un ejemplo:

const obj = 'prop1': 'foo', 'prop2': 'bar', 'prop3': 'baz', 'prop4': 'prop': 'buzz';

Desea dividir los dos primeros valores:

Object.entries(obj).slice(0,2).map(entry => entry[1]);
//["foo", "bar"]

Toda la keys?

Object.entries(obj).slice(0).map(entry => entry[0]);
//["prop1", "prop2", "prop3", "prop4"]

El último key-valor par?

Object.entries(obj).slice(-1)
//[ ['prop4', 'prop': 'buzz'] ]

Puedes reduce el resultado de Object.keys función

const myObject = 
 0: 'zero',
 1: 'one',
 2: 'two',
 3: 'three',
 4: 'four'
;

const sliced = Object.keys(myObject).slice(0, 2).reduce((result, key) => 
                    result[key] = myObject[key];

                    return result;
                , );

console.log(sliced);

Estaba tratando de cortar un objeto usando Array.prototypepero devuelve un vacío array

Eso es porque no tiene un .length propiedad. Intentará acceder a él, obtener undefinedcámbielo a un número, obtenga 0, y cortar como máximo esa cantidad de propiedades del objeto. Por lo tanto, para lograr el resultado deseado, debe asignarle un lengtho iterador a través del objeto manualmente:

var my_object = 0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four';

my_object.length = 5;
console.log(Array.prototype.slice.call(my_object, 4));

var sliced = [];
for (var i=0; i<4; i++)
    sliced[i] = my_object[i];
console.log(sliced);

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *