使用展开运算符从map函数返回键值对的方法
P粉253800312
P粉253800312 2023-08-13 17:18:34
0
1
520
<p>我有一个对象和一个数组。假设:</p> <pre class="brush:php;toolbar:false;">const first = { 'key1': 'some date', 'key2': 'some date' } const second = ['key3', 'key4']</pre> <p>然后使用扩展语法将它们合并为单个对象。对于数组中的每个项,我想创建一个新的键值对,并将其放入这个合并的对象中。目前,我只能从map函数中返回对象,而不是键值对。如何更改这个?</p> <pre class="brush:php;toolbar:false;">const combined = { ...first, ...second.map(key => ({ [key]: new Date() })) // 返回键值对而不是对象 }</pre> <p>我得到的结果:</p> <pre class="brush:php;toolbar:false;">{ '0': { key3: 'some date' }, '1': { key4: 'some date' }, key1: 'some date', key2: 'some date' }</pre> <p>我想要的结果:</p> <pre class="brush:php;toolbar:false;">{ key1: 'some date', key2: 'some date', key3: 'some date', key4: 'some date' }</pre> <p><br /></p>
P粉253800312
P粉253800312

全部回复(1)
P粉925239921

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

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

类似以下代码:

const combined = second.reduce(
    (prev, curr) => {
        return {
            ...prev,
            [curr]: new Date()
        };
    },
    first
);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板