23 Eylül 2019 Pazartesi

Array flatMap metodu

Giriş
Array içindeki array'lere düzleştirerek erişim sağlar.

Örnek
Şöyle yaparız.
var array = [['1st', '1595', '8886'], ['2nd', '1112']],
result = array.flatMap(([_, ...a]) => a);

console.log(result);
Çıktı olarak şunu alırız [ "1595", "8886", "1112"]
Örnek
Şöyle yaparızz
const jsObjects = [
   {a: 1, b: 2}, 
   {a: 3, b: 4, c: 66}, 
   {a: 5, b: 6, c: 55, d: 66}, 
   {a: 7, b: 8, c: 12, e: 15}
];

const keys = [...new Set(jsObjects.flatMap(Object.keys))];
console.log(keys);
Çıktı olarak şunu alırız ["a","b","c","d","e"]

Örnek
Elimizde şöyle bir veri olsun
{
 ...,
 "tx_responses": [
   {
     ...
     "logs" : [
       {
         ...,
         "events": [
             {
                 "type": "coin_received",
                 "attributes": [
                     {
                         "key": "receiver",
                         "value": "somesome"
                     },
                     {
                         "key": "amount",
                         "value": "somesome"
                     }
                 ]
             },
             ...
             {
                 "type": "transfer",
                 "attributes": [
                     {
                         "key": "recipient",
                         "value": "somesome"
                     },
                     {
                         "key": "sender",
                         "value": "somesome"
                     },
                     {
                         "key": "amount",
                         "value": "somesome"
                     }
                 ]
             },
             {
                 "type": "withdraw_rewards",
                 "attributes": [
                     {
                         "key": "amount",
                         "value": "somesomesomehere"
                     },
                     {
                         "key": "validator",
                         "value": "somesome"
                     }
                 ]
             },
             ...
         ]
     }
 ],
...
En dipteki attributes key alanı "amount" olanları attribute nesnelerini almak için şöyle yaparız
return res.data.tx_responses
  .flatMap(txr => txr.logs)
  .flatMap(log => log.events)
  .filter(evnt => evnt.type === "withdraw_rewards")
  .flatMap(evnt => evnt.attributes)
  .filter(attr => attr.key === "amount");




Hiç yorum yok:

Yorum Gönder