suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So geben Sie Schlüssel-Wert-Paare aus der Kartenfunktion mithilfe des Spread-Operators zurück

<p>Ich habe ein Objekt und ein Array. Annahme:</p> <pre class="brush:php;toolbar:false;">const first = { 'key1': 'irgendwann', 'key2': 'irgendwann' } const second = ['key3', 'key4']</pre> <p>Verwenden Sie dann die erweiterte Syntax, um sie zu einem einzigen Objekt zusammenzuführen. Für jedes Element im Array möchte ich ein neues Schlüssel-Wert-Paar erstellen und es in dieses zusammengeführte Objekt einfügen. Derzeit kann ich von der Map-Funktion nur Objekte zurückgeben, keine Schlüssel-Wert-Paare. Wie kann man das ändern? </p> <pre class="brush:php;toolbar:false;">const Combined = { ...Erste, ...second.map(key => ({ [key]: new Date() })) // Schlüssel-Wert-Paare anstelle von Objekten zurückgeben }</pre> <p>Das Ergebnis, das ich erhalten habe: </p> <pre class="brush:php;toolbar:false;">{ '0': { key3: 'irgendein Datum' }, '1': { key4: 'irgendein Datum' }, key1: 'irgendwann', key2: 'Irgendwann' }</pre> <p>Das gewünschte Ergebnis:</p> <pre class="brush:php;toolbar:false;">{ key1: 'irgendwann', key2: 'irgendwann', key3: 'irgendwann', key4: 'Irgendwann' }</pre> <p><br /></p>
P粉253800312P粉253800312502 Tage vor506

Antworte allen(1)Ich werde antworten

  • P粉925239921

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

    无法这样做。 map 输出一个数组(其中每个值是通过将原始数组中匹配索引处的值传递给函数的结果)。如果将数组展开到对象中,您将得到索引(数字)作为属性名称和值作为值。

    如果您想从数组开始并以对象结束,那么map就是错误的工具。请改用reduce

    类似以下代码:

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

    Antwort
    0
  • StornierenAntwort