recorrer que objetos objeto metodos lista convertir buscar array agregar javascript

que - metodos en javascript



Obtención de lista de claves de objetos JavaScript (14)

La respuesta de Anurags es básicamente correcta. Pero para admitir Object.keys(obj) en navegadores más antiguos, también puede usar el siguiente código que se copia desde developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… Agrega el Object.keys(obj) si no está disponible desde el navegador.

if (!Object.keys) { Object.keys = (function() { ''use strict''; var hasOwnProperty = Object.prototype.hasOwnProperty, hasDontEnumBug = !({ toString: null }).propertyIsEnumerable(''toString''), dontEnums = [ ''toString'', ''toLocaleString'', ''valueOf'', ''hasOwnProperty'', ''isPrototypeOf'', ''propertyIsEnumerable'', ''constructor'' ], dontEnumsLength = dontEnums.length; return function(obj) { if (typeof obj !== ''object'' && (typeof obj !== ''function'' || obj === null)) { throw new TypeError(''Object.keys called on non-object''); } var result = [], prop, i; for (prop in obj) { if (hasOwnProperty.call(obj, prop)) { result.push(prop); } } if (hasDontEnumBug) { for (i = 0; i < dontEnumsLength; i++) { if (hasOwnProperty.call(obj, dontEnums[i])) { result.push(dontEnums[i]); } } } return result; }; }()); }

Tengo un objeto de JavaScript como

var obj = { key1: ''value1'', key2: ''value2'', key3: ''value3'', key4: ''value4'' }

¿Cómo puedo obtener la longitud y la lista de claves en este objeto?


Para una cadena delineada por comas que lista las claves de un objeto JSON, intente lo siguiente:

function listKeys(jObj){ var keyString = ''''; for(var k in jObj){ keyString+=('',''+k); } return keyString.slice(1); } /* listKeys({''a'' : ''foo'', ''b'' : ''foo'', ''c'' : ''foo''}) -> ''a,b,c'' */


Si solo desea las claves que son específicas de ese objeto en particular y no las propiedades de prototype derivadas:

function getKeys(obj) { var r = [] for (var k in obj) { if (!obj.hasOwnProperty(k)) continue r.push(k) } return r }

p.ej:

var keys = getKeys({''eggs'': null, ''spam'': true}) var length = keys.length // access the `length` property as usual for arrays


Solución recursiva para navegadores que admiten ECMAScript 5:

var getObjectKeys = function(obj) { var keys = Object.keys(obj); var length = keys.length; if (length !== 0) { for (var i = 0; i < length; i++) { if (typeof obj[keys[i]] === ''object'') { keys[keys[i]] = getObjectKeys(obj[keys[i]]); } } } return keys; };


Tenga en cuenta que en coffeescript esto se puede lograr en todos los navegadores y nodos como

k for k of obj

y por lo tanto

(1 for _ of obj).length


Underscore.js hace que la transformación sea bastante limpia:

var keys = _.map(x, function(v, k) { return k; });

Edit: me perdí que puedes hacer esto también:

var keys = _.keys(x);


Usando ES6, puede usar forEach para iterar sobre las claves de un objeto. Para obtener todas las claves, puede utilizar Object.keys que devuelve todas las claves en un Objeto

Object.keys(obj).forEach(function(keyValue, index, map) { console.log(keyValue); });

La mano corta del fragmento anterior sería, que solo toma un parámetro

Object.keys(obj).forEach(function(keyValue) { console.log(keyValue); });


Usando el método de rebanar, aplicar y unir.

var print = Array.prototype.slice.apply( obj ); alert(''length=''+print.length+'' list''+print.join());



var obj = { key1: ''value1'', key2: ''value2'', key3: ''value3'', key4: ''value4'' } var keys = Object.keys(obj); console.log(''obj contains '' + keys.length + '' keys: ''+ keys);

Es supported con la mayoría de los principales navegadores ahora.


obj = {''a'':''c'',''b'':''d''}

Puedes probar:

[index for (index in obj)]

esto volverá

[''a'',''b'']

para obtener la lista de claves o

[obj[index] for (index in obj)]

para obtener los valores


var keys = []; for(var k in obj) keys.push(k); alert("total " + keys.length + " keys: " + keys);


var keys = new Array(); for(var key in obj) { keys[keys.length] = key; } var keyLength = keys.length;

para acceder a cualquier valor del objeto, puede usar obj [clave];


var obj = { key1: ''value1'', key2: ''value2'', key3: ''value3'', key4: ''value4'' } console.log(Object.keys(obj)); console.log(Object.keys(obj).length)