Tengo un conjunto de elementos div:
<div class="myDiv" key="default">Default Val</div> <div class="myDiv" key="default">Default Val2</div> <div class="myDiv" key="myVal-1">Value 1</div> <div class="myDiv" key="myVal-2">Value 2</div> <div class="myDiv" key="myVal-3">Value 3</div>Y quiero recopilar todos los atributos 'clave' excepto aquellos con valor 'predeterminado' en una matriz. Sé que puedo usar _.each() para eso, pero ¿hay una función lodash que sea una combinación de _.map() y _.filter()? En otras palabras, necesito algo como esto:
arr = _.func($('.myDiv'), (el) => { // collects truthy values and ignores falsy ones return $(el).attr('key') == 'default' ? $(el).attr('key') : false; }); arr // => ["myVal-1", "myVal-2", "myVal-3"]Hay reduce donde puedes definir cualquier cosa en un bucle. Pero no significa necesariamente que sea más fácil de leer.
arr = _.reduce($('.myDiv'), (result, el) => { const key = $(el).attr('key'); if (key !== 'default') result.push(key); return result; }, []);Simplemente use el map y filter :
arr = _.filter( _.map( $('.myDiv'), el => $(el).attr('key') ), key => key != 'default' );