Esta noticia fue aprobado por nuestros expertos así se asegura la exactitud de este artículo.
Solución:
Además de las soluciones dadas, puede usar un estilo recursivo para verificar el keys.
Esta propuesta da la oportunidad de tener más objetos anidados dentro y obtener solo las partes filtradas.
function filterBy(val)
function iter(o, r)
return Object.keys(o).reduce(function (b, k)
var temp = ;
if (k.toLowerCase().indexOf(val.toLowerCase()) !== -1)
r[k] = o[k];
return true;
if (o[k] !== null && typeof o[k] === 'object' && iter(o[k], temp))
r[k] = temp;
return true;
return b;
, false);
var result = ;
iter(obj, result);
return result;
var obj = Alarm: Hello: 48, "World": 3, Orange: 1 , Rapid: Total: 746084, Fake: 20970, Cancel: 9985, Word: 2343 , Flow: Support: 746084, About: 0, Learn: 0 , test: test1: test2: world: 42 ;
console.log(filterBy('ange'));
console.log(filterBy('flo'));
console.log(filterBy('wor'));
.as-console-wrapper max-height: 100% !important; top: 0;
Puedes crear una función usando reduce()
y Object.keys()
eso comprobará key nombres con indexOf()
y devolver el resultado deseado.
var obj =
"Alarm":
"Hello": 48,
"World": 3,
"Orange": 1
,
"Rapid":
"Total": 746084,
"Fake": 20970,
"Cancel": 9985,
"Word": 2343
,
"Flow":
"Support": 746084,
"About": 0,
"Learn": 0
function filterBy(val)
var result = Object.keys(obj).reduce(function(r, e)
if (e.toLowerCase().indexOf(val) != -1)
r[e] = obj[e];
else
Object.keys(obj[e]).forEach(function(k)
if (k.toLowerCase().indexOf(val) != -1)
var object =
object[k] = obj[e][k];
r[e] = object;
)
return r;
, )
return result;
console.log(filterBy('ange'))
console.log(filterBy('flo'))
console.log(filterBy('wor'))
Con el filter
método creo que te refieres al Array#filter
función. Esto no funciona para los objetos.
De todos modos, una solución para sus datos de entrada podría verse así:
function filterObjects(objects, filter)
filter = filter.toLowerCase();
var filtered = ;
var keys = Object.keys(objects);
for (var i = 0; i < keys.length; i++)
var key = keys[i];
if (objects.hasOwnProperty(key) === true)
var object = objects[key];
var objectAsString = JSON.stringify(object).toLowerCase();
if (key.toLowerCase().indexOf(filter) > -1
return filtered;
valoraciones y comentarios
Agradecemos que quieras añadir valor a nuestro contenido informacional tributando tu experiencia en las notas.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)