2016-01-15 11 views
5

Questo answer, mostrato di seguito, è ora interrotto in lodash v4 per quanto posso dire.Come ottenere la funzionalità _.pick in lodash versione 4

var thing = { 
    "a": 123, 
    "b": 456, 
    "abc": 6789 
}; 

var result = _.pick(thing, function(value, key) { 
    return _.startsWith(key, "a"); 
}); 

console.log(result.abc) // 6789 
console.log(result.b) // undefined 

Come si fa nella versione 4 di lodash?

risposta

0

Hm, non è documentato che _.startsWith() sia stato rimosso da Lodash.

In un modo o nell'altro, che ne dici di analizzare il primo carattere della chiave?

var result = _.pick(thing, function(value, key) { 
    return key[0] == "a"; 
}); 
+0

_.pick() in v4 non più accettare un predicato. Ecco cosa sta facendo _.pickBy. Vedi la mia risposta per maggiori dettagli. – NicBright

2

Update (08. febbraio)

Dal v4.0.1, _.omitBy e _.pickBy ora fornire un parametro chiave per il predicato. Pertanto, la risposta corretta ora è:

Usa _.pickBy(object, [predicate=_.identity])

risposta originale

Partendo v4, alcuni metodi sono stati suddivisi. Ad esempio, _.pick() è stato suddiviso in _.pick(array, [props]) e _.pickBy(object, [predicate=_.identity])

Il mio primo approccio è stato provare questo metodo _.pickBy(). Sfortunatamente tutti i metodi ...By() vengono passati solo il valore come primo argomento. Non riceveranno la chiave o la raccolta passata. Ecco perché non funziona semplicemente passando da _.pick() a _.pickBy().

Tuttavia, si può fare in questo modo:

var thing = { 
    "a": 123, 
    "b": 456, 
    "abc": 6789 
}; 

var result = _.pick(thing, _(thing).keys().filter(function(key) { 
    return _.startsWith(key, "a"); 
}).value()); 

console.log(result) 
+0

Sì, ho provato la stessa cosa, usando _.pick e _.pickBy concatenando - senza successo. Ti darò uno per l'ingegno - ma non posso davvero accettare come una risposta elegante. A mio parere, hanno effettivamente rimosso la funzionalità. – SDK

Problemi correlati