Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mengembalikan pasangan nilai kunci daripada fungsi peta menggunakan operator spread

<p>Saya mempunyai objek dan tatasusunan. Andaian: </p> <pre class="brush:php;toolbar:false;">const first = { 'key1': 'sesuatu tarikh', 'key2': 'sesetengah tarikh' } const second = ['key3', 'key4']</pre> <p>Kemudian gunakan sintaks lanjutan untuk menggabungkannya menjadi satu objek. Untuk setiap item dalam tatasusunan, saya ingin mencipta pasangan nilai kunci baharu dan memasukkannya ke dalam objek gabungan ini. Pada masa ini, saya hanya boleh mengembalikan objek daripada fungsi peta, bukan pasangan nilai kunci. Bagaimana untuk menukar ini? </p> <pre class="brush:php;toolbar:false;">const combined = { ... pertama, ...second.map(key => ({ [key]: new Date() })) // Kembalikan pasangan nilai kunci dan bukannya objek }</pre> <p>Hasil yang saya dapat:</p> <pre class="brush:php;toolbar:false;">{ '0': { key3: 'some date' }, '1': { key4: 'some date' }, key1: 'sesuatu tarikh', key2: 'sesuatu tarikh' }</pre> <p>Hasil yang saya mahukan:</p> <pre class="brush:php;toolbar:false;">{ key1: 'sesuatu tarikh', key2: 'sesuatu tarikh', key3: 'sesuatu tarikh', key4: 'sesuatu tarikh' }</pre> <p><br /></p>
P粉253800312P粉253800312434 hari yang lalu452

membalas semua(1)saya akan balas

  • P粉925239921

    P粉9252399212023-08-14 14:46:08

    Tidak boleh melakukan ini. map Mengeluarkan array (di mana setiap nilai adalah hasil daripada menghantar nilai pada indeks yang sepadan dalam tatasusunan asal kepada fungsi). Jika anda mengembangkan tatasusunan menjadi objek, anda akan mendapat indeks (nombor) sebagai nama harta dan nilai sebagai nilai.

    Jika anda ingin bermula dengan tatasusunan dan berakhir dengan objek, maka map就是错误的工具。请改用reduceadalah alat yang salah. Sila gunakan kurangkan sebaliknya.

    Serupa dengan kod berikut:

    const combined = second.reduce(
        (prev, curr) => {
            return {
                ...prev,
                [curr]: new Date()
            };
        },
        first
    );
    

    balas
    0
  • Batalbalas