Objektitaulukon keskiarvot keyn perusteella

Anonyymi

Reducella saa ainakin jokaisen arvon erikseen näppärästi, mutta voikohan sitä käyttää myös jotenkin "niputettuna", että selvittäisiin yhdellä silmukalla, ettei ao. esimerkissä tarvitsisi tehdä jokaiselle keylle omaa reducea.

Eli että saataisiin heitetty suoraan muuttujiin [xKeskiarvo, yKeskiarvo, zKeskiarvo]=taulukko.reduce.. jne. Liekö mahdollista?

//---
const piste1 = { x: 1, y: 2, z: 3 }
const piste2 = { x: 4, y: 5, z: 6 }
const piste3 = { x: 7, y: 8, z: 9 }
const taulukko = [ piste1, piste2, piste3 ]

const xKeskiarvo = taulukko.reduce((summa, { x }) => summa x, 0) / taulukko.length
const yKeskiarvo = taulukko.reduce((summa, { y }) => summa y, 0) / taulukko.length
const zKeskiarvo = taulukko.reduce((summa, { z }) => summa z, 0) / taulukko.length

console.log( { xKeskiarvo, yKeskiarvo, zKeskiarvo } )

// tulostaa: { xKeskiarvo: 4, yKeskiarvo: 5, zKeskiarvo: 6 }

4

126

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Miten koodaan saimaan peräreijän!

    • Anonyymi

      Sainkin sen toteutettua, mutta tuli aika karmean näköinen lauseke ja piti vielä mappiakin käyttää.

      const [ xKeskiarvo, yKeskiarvo, zKeskiarvo ] =
      taulukko.reduce(([ sx, sy, sz ], { x, y, z }) =>
      [ sx x, sy y, sz z ], [ 0, 0, 0 ]).map((k) => k / taulukko.length)

    • Anonyymi

      Voisi tehdä myös niin, että ensin tekee funktion, joka ottaa attribuutin nimen ja palauttaa funktion, joka laskee keskiarvon taulukon olioista sen attribuutin suhteen. Sitten mäppää halutut attribuuttien nimet tämän funktion avulla keskiarvoiksi.

      const f = (attr) => (arr) => arr.reduce((acc, x)=>acc x[attr], 0)/arr.length;
      ['x', 'y', 'z'].map(attr=>f(attr)(taulukko));

      • Anonyymi

        Hyvä, tämä näyttää paljon tyylikkäämmältä ratkaisulta.


    Ketjusta on poistettu 1 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Ihanasti alkoi aamu: SDP:n kaula kokoomukseen jo 6,9 %-yks

      Lindtmanin I hallitus on tukevasti jytkyttämässä laittamaan Suomi kuntoon Orvon täystuhohallituksen jäljiltä, jonka kann
      Maailman menoa
      444
      2999
    2. Teidän persujen pitäisi välillä miettiä kuinka Suomen talous saataisiin kuntoon

      Ja lopettaa tuo tyhjänpäiväinen maahanmuuttajista höpöttäminen. Teillä on sentään rahaministerin salkku tällä kierroksel
      Maailman menoa
      137
      2235
    3. Minkä ikäinen

      Minkä ikäinen on kaipauksesi kohde?
      Ikävä
      132
      2063
    4. Kuka omistaa entisen Veljeskodin?

      Kenellä on varaa pitää hiljattain remontoitua rakennusta tyhjillään? Tehdäänkö siitä Suomen kallein kirpputori vai mikä
      Ähtäri
      7
      1305
    5. Kaninkolojen vaikutus?

      Vinkki sinkkumiehille: jos haluatte kunnollisen täysijärkisen naisen, niin kaivautukaa ulos kaninkoloistanne ja parantak
      Sinkut
      208
      1304
    6. Martina ei mennyt naimisiin

      IS 17.9: Martinan häät peruuntui, tajusi, ettei ollut oikea aika. Rahat meni hevosiin. On edelleen parisuhteessa Yhdysva
      Kotimaiset julkkisjuorut
      151
      1243
    7. Persut ei kestä heidän johtajistaan tehtyä huumoria

      Laajalti tiedostettu tosiasia on, että autoritaariset johtajat ja erinäiset diktaattorit eivät kestä heidän kustannuksel
      Maailman menoa
      28
      1218
    8. Kuka opettaja, mikä koulu

      Minkä koulun opettaja saanut potkut
      Nivala
      8
      1036
    9. Millaiset hiukset kaivatullasi on?

      Hiusten pituus, väri, suorat vai kiharat?
      Ikävä
      56
      1011
    10. Ootko miettiny koskaan

      Et oot jonkun mielestä ihanista ihanin ❤️
      Ikävä
      37
      775
    Aihe